刚结束的电话面试. 声网.
面试结果:一面通过
听声音是一个经验丰富的大叔 . 比较认真且标准的技术人员的感觉 . (除了问实习时间外没有问别的多余的东西)
本人是acm铜牌选手,但是在本次面试数据结构和算法上连连翻车.哎~~~几近崩溃
主要是翻车的题.
没有自我介绍.
没有问语法问题
问了一些实习时间上的问题。
都是算法/数据结构/感觉高大上的问题.
"你经历还挺丰富啊,libco和redis的"(面试官说libco的发音跟自己的不太一样,没反应过来.)
这里说一下 : 学的这些内容Linux小组那边可能很常见 . 而且redis实在是谈不上已经掌握了. 从这里以及整体经历可以看出一点点面试官的态度:可能对应届生期望并不是那么高?可能面试官也不是职业面试官而是搞技术的主管,而且全程没问redis,说明这个岗位其实跟redis不太相关,也许面试官对redis和libco不太熟悉?
-2.8086汇编保护模式和实模式?(不太了解)
好吧,当时对这两个名词不太了解,其实实模式就是段地址+偏移地址(也就是直接使用物理地址)
保护模式就是现在用的虚拟地址那一套方法和理论.
-1.了解c++11的特性
答:只了解一些基本的(打比赛很少用到).
0.如何一层一层地遍历一棵树,
我答BFS.
问:具体怎么实现
使用队列,然后说了一下过程.还可以.
1.编译原理学过没(下学期开),数据结构呢?(当然学了)堆排序的排序过程.让我非常详细地说出步骤
略
2.堆排序和快排的区别(一时没想起来)
堆排序最坏复杂度nlogn , 快排 n*n
最排序空间复杂度(辅助空间),堆排序O(1),快排O(logn~n)
但是快排可以在大多数计算机体系上比较高效地完成.所以平均来说是最快的.
堆排序使用二叉树,快排本质是分治思想.
还有别的区别吗,有人知道请在下面留言谢谢.
3.看过Linux源码没?(QAQ)
答:没有
问:感不感兴趣?
答:非常感兴趣
问:那为什么不看呢?
答:时间紧迫,还没来得及看.
5.既然你看过libco,介绍一下libco,libco与线程的区别是什么
我说引入协程的目的跟引入线程的目的是一样的.协程的share_stack机制可以节约栈空间,协程上下文切换更快.
协程不能有效利用多核cpu的优势,需要用多进程和多线程来弥补.
(面试官似乎不太满意)然后又问;,libco比异步IO epoll要优于哪里?
我答:libco协程可以对一个作业从头到尾一条龙服务,但是epoll只能拆开. 主要是模型上的区别,其他的就不了解了.
6.快速排序与冒泡排序的复杂度?
快排nlogn,冒泡n*n,
快排比冒泡明显减掉了很多不必要的比较,举个栗子?
答不上来
7.链表怎么判环?
答:我大概把链表看成一棵树或者图.用搜索,把搜过的标记1,如果重复了就是环.
(明显不是面试管想要的答案,所以面试官补充:)
问:如果不允许修改链表数据结构,也就是不允许在上面打标记呢?
我:使用unordered_map,也就是hash来强行加标记,hash复杂度也是O(1).中间还跟面试官扯了一下红黑树版的map和hash版的map
面试官:哈希的话,几百万的数据也是有很多碰撞的吧?复杂度就不是O(1)了?咋办?
我...
好吧,其实当时听上去一百万挺大的.其实只有1e6也就是1M而已.hash明显可以做到近似O(1). 不过给我问蒙了(还是不够镇定啊,全程紧张),然后GG.
网上找了一下正解 , 据说是两个指针一快一慢地扫描链表 , 如果有环的话最终会在环上相遇 . (不是太懂为什么分叉处一定会进入环,如果没有进入环的话岂不是GG?)
https://www.cnblogs.com/dancingrain/p/3405197.html
后来想了想,这个题可能是我想复杂了(哎),面试一定要问清题意啊
然后面试官基本结束了电话面试,然后我赶紧问面试官能不能提一个问题.
end. 问题提完之后,又加了一个问题:我看到你对TCP有过一定了解.TCP发送数据时,使用阻塞的形式发送(send),接收端使用(recv),缓冲空间是2k,如果用send发送500字节的数据,每次send和recv的返回值是多少?(悲剧啊)
回答:只是用过但是没有了解过具体实现.这个问题不清楚.maybe跟窗口大小有关.
答案应该是500字节.缓冲足够的情况下,主要系统可以将数据拷贝到缓冲区中,就可以正确返回相应的大小.跟接收端是否接收到无关.https://blog.csdn.net/ordeder/article/details/17240221
总结一下
总体来讲,整个过程非常紧张,时间也很紧凑.一上来就开始提问.而且算法题只有半分钟到一分钟的思考时间,非常非常紧凑!!!
注重基础(我这破项目经历都能说成经历丰富,醉了),所以对与各种知识点都要吃透.比如我认为冷门的:快排节约了那些比较啊etc.
还有就是一定镇定!镇定!镇定! (但是时间这么紧凑怎么镇定啊)那种哈希的问题可能面试官也有点迷糊,其实冷静下来想一下这个题可以答得不错的.哎,一紧张就悲剧了.
这次面试基本围绕着简历上的内容.写了什么问什么.然后一定要搞扎实,把专业名词的含义搞明白!!!
面试的算法明显偏离acm算法,而是偏向于通用的面试算法.所以对各种排序/基础数据结构的 原理/实现/为什么/节约在哪里了 要有更深入/很深入的理解和掌握.!!!!
面试不是打比赛,面试不是打比赛,面试不是打比赛!!!允许思考的时间非常少。
还有最后提的问题大概是贵公司这个岗位需要什么样的知识储备啊,侧重什么呀这种的. 可不可以对我本次面试提一点建议啊?
回答 : 我们的岗位需要的知识你们在学校根本学不到.所以这次面试问的是那种普遍的问题.基础的问题,大面上的.
The End.
嗯,才面了第一个,所以上述观点一定不是很全面,大家参考一下就好.