饿了么-算法工程师-第1轮面试
面试概况
面试时间:2016年3月9日 14:30
面试时长:22分钟(十有八九又挂了)
面试形式:电话面试
面试心得
面试岗位为算法工程师,并没有问太多关于自然语言处理,机器学习等方向相关的问题。
面试问题主要集中于编程语言、数据结构、基本算法、性能优化(算法/系统)等基础知识。
总的来说,主要有两点不足:
(1)基础不扎实,没有做好基础只是的准备工作;
(2)态度不端正,没有认真分析面试官的问题;
面试内容
1.简单介绍一下自己
2.编程语言
(1)使用哪种语言熟练些?
Python
(2)Python中is和==的区别?
(3)Python的print输出什么?
a = 1
b = 1
print a is b
(4)了解Python装饰器吗?
不了解
(5)Python和C++比性能上有所欠缺,有做过Python性能优化吗?
没有
3.数据结构和算法
(1)有用过哪些数据结构?
链表,二叉树,队列,栈等。
(2)如何找到二叉树中两个结点的最近公共祖先?
思路:
找到从根节点到第一个结点的路径;
找到从根节点到第二个结点的路径;
从前向后对比两个路径,第一个不同的结点的前一个结点就是所求结点;
(3)时间复杂度是多少?
时间复杂度为O(logN);
(4)如果进行n次查找,时间复杂度是多少?
n次查找时间复杂度为O(N*logN)
(5)有什么改进的方法吗?
改进思路:加缓存(随口说的)
(6)讲讲快速排序的原理?
首先找一个基准元素;
然后比它小的放在左边,比它大的放在右边;
递归处理左半部分和右半部分;
(7)时间复杂度是多少?
理想情况下时间复杂度为O(N*logN)
最坏情况下时间复杂度为O(N*N)
(8)列举一个最坏情况下的例子?
最坏情况下的例子:完全相反的顺序(这个答案不对)
4.项目
(1)爬虫怎么做的?
调用API(面试官:那这个不是网页解析的那种爬虫。)
(其实有做过自己解析网页的爬虫,但是忘了和面试官说)
(2)做过哪些比较完整的大型项目吗?
一个Hybrid App开发
(3)介绍一下项目使用了哪些技术?
整体架构Linux,Apache,MySQL,PHP;
后台使用Yii2.0框架;
前端使用Ionic框架;
(4)遇到了哪些问题以及是如何解决的?
遇到过图片体积过大的问题,通过图像压缩解决。
(5)前端和后台的通信协议是什么?
http协议(不知道他想问啥。。。)
(6).遇到性能问题应该如何提高?
没做过性能优化
(虽然没做过,但是当时应该从服务器(Apache/Nginx),数据库(数据库引擎/索引/缓存数据库)两方面谈一下。)