声网电话面试的总结,技术面, 声网20min(c/c++算法工程化类职位) (一面通过&拿到实习offer)

刚结束的电话面试. 声网.

面试结果:一面通过

听声音是一个经验丰富的大叔 . 比较认真且标准的技术人员的感觉 . (除了问实习时间外没有问别的多余的东西)

本人是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.

嗯,才面了第一个,所以上述观点一定不是很全面,大家参考一下就好.

 

你可能感兴趣的:(面试)