春招实习终于结束啦


原文链接:https://www.nowcoder.com/discuss/80089?type=0&order=4&pos=5&page=1

春招实习终于可以结束了,感谢帮助过我的人,感谢牛客网,看了几十篇面经,是时候把自己的面经放出来了。
投了二十多家公司,总共有6家公司给了我面试机会,非常感谢给我机会的公司,谢谢。

  • 阿里(一面挂)
  • 华为(offer排序)
  • 去哪儿网(offer)
  • 58同城(2面等消息,应该是挂了)
  • 腾讯(offer)
  • 爱奇艺(1面等消息,也应该是挂了)

阿里

投的太早了,刚来学校,啥都忘了,啥也不会,第一次面试,结果一面就凉了。

  1. 进程与线程的区别
  2. 线程同步的方式 互斥量、读写锁、条件变量、自旋锁、屏障。
  3. 进程的状态?除了阻塞、就绪、执行状态,还有?
  4. 用多线程写过代码吗?如何创建一个线程池?
  5. tcp如何实现可靠传输?
  6. udp可靠传输交给应用层,应用层如何实现可靠传输的?
  7. 堆和栈的区别?堆栈溢出?
  8. 会不会数据库?解释下左连接和右连接,事务了解吗?
  9. 链表和数组的区别?链表和数组的应用场景?
  10. hashtable的底层实现?查找一个元素的过程?解决冲突方法?
  11. 阿里巴巴大部分都是Java岗,如果让你转Java岗,你会怎样
  12. 你C++的优势在那?
  13. 你还有那些擅长的技术?
  14. 简单说说项目
  15. 简单说说比赛?比赛的收获是啥?
  16. 有什么想问他的?

华为

华为的面试,在重庆,现场面,全是讲项目,基础的基本没问,幸好项目没深问。

  1. 自我介绍,语无伦次的说了一分来钟就结束战斗了。
  2. 然后讲项目,边画流程图边讲,大部分都是点到为止,幸好没深问技术细节,不然尴尬了。
  3. 面试官看看我的简历,诶,你有个人网站啊,点开一看,里面有我记录的华为笔试题,然后就问我华为笔试题怎样,这下可以装逼了,巴拉巴拉说了一大堆,幸好我机智。
  4. 问了下研究生期间那些课程对我影响较大,我厚着脸皮说那本西瓜书(周志华的机器学习)和算法,引领我进入了机器学习的大门,这逼装的,要是问我机器学习算法,估计会僵硬。然后将了下算法有啥动态规划、分治、贪心啥的思想,他也没具体问,就说ok了,等下一轮面试。

等了不到五分钟,二面开始。

  1. 自我介绍,紧张,又语无伦次。
  2. 问了下项目,说到一半不太感兴趣好像。
  3. 问对华为加班的看法啥的
  4. 问对城市的选择啥的
  5. 问如果在公司,你非常努力,但得不到别人的认可怎么办啥的
  6. 问有啥想问他的。

就这么稀里糊涂的结束了,过了几天,收到短信,说是offer排序中,具体是否发放offer看实习时间和面试成绩综合考虑。

去哪儿网

去哪儿网是在成都进行现场面试的,从重庆到成都,从早上到晚上,一口饭没吃,终于撑住了。

  1. 自我介绍,相当于尬聊,我这人比较容易紧张。。。
  2. 给到题,求单链表的长度,考虑有环的情况,跟他说思路,我说分两种情况,首先判断链表是否有环,如果没有环,一趟遍历就可以搞出来了,如果有环,则关键点是求得环的入口,然后计算环长和头结点到入口的距离就可以知道环长了,问题来了,如果判断有环,如何求出环的入口。我说通过快慢指针,快指针一次走两步,慢指针一次走一步,如果快指针等于慢指针的话,那么就可以说明有环,问题来了,为什么了,跟他解释了下,就跟跑步一样,慢指针到环的入口时,快指针肯定进入了环,此时,慢指针不需要走完一圈,快指针一定会追上满指针,为啥,跟他说反证法,如果慢指针走完一圈,快指针肯定走完两圈,这一定可以保证快指针可以超过慢指针一次,他可能不太明白,反正我是这样说的,然后说如果这样的情况,如何找到环的入口,要我证明,我给他证明了一下。本以为这题到此结束,结果问题又来了,首先说我的证明有点问题,然后继续说我的快慢指针为啥定义为2:1的步长关系,我说我试过其他的,比如3:1,会出现跳跃的情况,就是快指针有可能会跳跃慢指针,导致快慢指针不会相遇,也就是相等,问题来了,如果是5:3呢,我想了一下,这可能跟环的周长跟5和3的倍数有关,他说,大概是这样的好像,然后叫我后面可以试着证下(也就是为啥是2:1,不是其他的关系)。
  3. 讲了下比赛,怎么分配任务的,感觉答的还可以。
  4. 讲讲C++的shared_ptr,我跟他说本质上就是普通的指针多了一层封装,核心是通过引用计数来实现的,巴拉巴拉讲了一下实现细节。
  5. 看我简历上没有写数据库,问我了解数据库吗,我说了解一下,本科学过关系数据库相关的,然后问我数据库范式,我讲的太细了,数据库范式引用的目的,第一范式,每一个属性都是不可分的,第二范式,消除非主属性对候选码的部分依赖,讲了下啥是非主属性、啥是候选码、啥是完全依赖、部分依赖,不这样会导致什么后果,还没说完,他可能觉得我有点啰嗦,将我直接将概念,然后把概念讲了下。

等下一轮面试,等了好久...

  1. 自我介绍,恐怖啊,又是这个。
  2. 然后好像没问下,问了下要转java或这ios,没有C++岗了,伤心,只能口头说了一大堆可以转的话,语言啥的不是问题,只要基础好,转啥啥都行的意思。
  3. 问我有什么想问他的,问了下那部门主要干嘛的,用什么技术,说想了解啥

然后叫我等下一轮面试。真快,10分钟都没有,吓死我了,以为凉了。

十分钟后,通知三面,一看是个美女,肯定是HR小姐姐无疑了。

愉快的聊天了,什么家在那,对工作地点有什么要求,转java或者ios能接受吗? 需要多久适应,我说一个月吧,不好说啊,我争取好好学。。。

然后问有什么想问她的,我说我能知道一下面试结果吗?她说我已经通过了面试了,一周以内发offer到邮箱,说了下实习工资的情况,问了什么时候去实习。

腾讯

内推二面挂

  1. 自我介绍,讲讲直播项目,直播存的是啥文件(.flv)?为什么不用hls,为什么用rtmp(因为业界公认的),了解nginx吗?
  2. 了解C的寄存器吗?(不懂),我说能不能提示一下啥意思,他说给个场景,int a[10] = {0}; a[12]=0; 我说下标越界,还有可能非法修改到该地址的重要数据,导致系统崩溃。他说他大致知道了,估计答错了
  3. 了解汇编没(看过一点,早忘了,回答了不了解)
  4. 稳定的排序,最差的时间复杂度是o(nlogn),我说是归并排序,并解释了下稳定性。
  5. 问我学过概率论没,我说本科学过,他说估计你忘了,我说我可以试试吗? 3个人,10个金币,每个人至少得一个金币,有多少种分法,他问我思路,没给时间,我只能说不会(真忘了)。
  6. 了解过fork,讲一下fork,fork为啥父进程返回子进程idd,子进程返回0,我说首先进程id为0的进程是系统调用进程,创建的子进程的id不可能为0,这样就可以区分出哪个是子进程,哪个是父进程,然后他问可以两个返回值可以互换吗?为什么? 后来我才知道互换的话,父进程没法知道子进程id到底是多少。
  7. 了解杀死进程的原理吗? 通过发送信号,也没答上来。
  8. 了解sizeof吗,给他讲了下,这是一个运算符,而不是函数,在程序编译阶段就可以求得变量的大小。
  9. 用C如何写出最短的代码, 一个整形变量,变量为0,返回0,非0,返回1。我答 a!=0;
    a == 0 ? 0 : 1; 这两种方式,他说还有更短的, !!a,然后他说linux源码好多这样写的,你没看过吗?还真没看过。
  10. 问了下map的底层实现? map(红黑树)、unordered_map(hashtable),为什么有序的要用红黑树,红黑树本身即使自排序树,中序遍历就可以得到拍好序的结果,同时查找效率是o(logn)。
  11. 你会什么?(这道题我都不知道该咋回答,会C++,基本算法,STL之类的)

竟然等来了二面,唉,该凉的还是得凉。

  1. 自我介绍,讲讲直播项目(真他妈大坑,搞不起),延迟播放具体过程(啥的拼接不懂)。了解视频的编码和解码算法吗?I帧、P帧、B帧了,我真是自己作死了,都不会,凉很正常的。
  2. 讲讲比赛项目,瞎讲,没什么反馈。(人家一句就是匹配咯,我竟我话可说)。
  3. C++ new 和 malloc 的区别,总算会一个了。
  4. 网络连接的过程,我还问他是不是将三次握手、四次挥手啥的还是socket套接字的连接过程,后来讲了三次握手和四次挥手。
  5. 有什么想问的,凉的这么彻底,也就没问了,第二天一查状态,变成不合适了。

现场面

4月23号腾讯来重庆现场招聘了,没收到通知的我,硬着头皮跟同学过去了,面试官真好,给了我霸面的机会,感谢感谢。

  1. 自我介绍
  2. 做到题,一组数,数值在1-n之间,其中有一个数重复出现两次,找出出现两次的数,比如n=3 1 2 2 3 ,则重复的数为2
    方法:hashtable 、 异或 1 2 2 3 和 1 2 3 异或 、 求和- 1 2 3 求和。
  3. 45亿个数,有一个数重复出现了两次,怎么找出,bitmap的思想 ,或者分治+hash。
  4. 讲stl,迭代器失效场景、sort实现等。
  5. class 和 struct的区别。
  6. I/O复用,没用过,他不让我讲下去,其实我知道一点点底层原理。
  7. 网络那块不会,他叫我看unix网络编程和zeromq框架。

面试官叫我不要紧张,多看书学习网络编程相关的。人真的很好。

二面

  1. 求最大公约数,手写,第一次还写错了,经过提示写了两次总算写对了,太紧张了。
  2. 讲堆排过程
  3. 讲内省排序过程。
  4. 异步编程和同步编程,没怎么答上来
  5. 接口回调,也没答上来,回调函数之类的感觉
  6. 死锁,编程中如何避免死锁,我讲了下死锁,说防止出现环路等待。。。
  7. 问项目算法和比赛文本分类算法,也答不出来。

总之全是算法,答的太水了。凉透了。

竟然苟到hr面

  1. 自我介绍
  2. 讲讲项目
  3. 父母情况,是否独生子女
  4. offer情况
  5. 到岗实习时间,有什么想问她的

非常感谢面试官给的机会,二面答的这么烂,还让我过了,真的要好好学习,好好学习!!!

面完,等了十天收到offer call。

58同城

视频面,加了面试官的QQ

  1. 面试官很好,先介绍了他们部门是搞搜索的。
  2. 详细介绍比赛,预测结果0.58是什么?为什么准确度提高不了。有什么办法提高。考虑过使用机器学习的方法吗?
  3. STL sort原理(内省排序,插入、快排、堆排,快排比堆排快,局部性原理)
  4. deque和list的区别
  5. 讲了下STL。
  6. 手写atoi,写的有点小瑕疵。
  7. 仿函数(函数对象)和 函数指针的区别,效率和扩展性。

上午面完一面,下午就开始二面。

  1. 自我介绍
  2. 了解linux下的C开发吗?如何查看一个进程有多少个线程。
  3. pstree offsetof container_of了解吗?全跟linux有关,不会
  4. 如何快速比较两个字符串是否相等,我说直接o(n)遍历,或者异或每个字符,复杂度都是o(n)。他说可以通过类型转换,比如将4个字符转成一个int,然后相当于比较int是否相同,o(n/4)。
  5. 写一个宏函数
    image
  6. 大端小端,写代码验证系统是大端还是小端 union来实现
  7. 翻转单链表,手写。
  8. 如何查看一个子进程的父进程状态,getppid();
  9. cpu cache存的是啥(数据?)
  10. 动态共享库和静态共享库,跟他说了下静态链接和动态链接。
  11. 进程A如果可以访问到动态共享库中的全局变量,进程B能否访问到动态共享库中的全局变量,不懂,说可以访问,进程B这是没法访问进程A中的全局变量,因为进程之间的地址空间是独立的,然后他说这样的话,通过动态共享库是不是也就可以实现进程通信了?我一想,IPC通信没有共享库这玩意,没法解释
  12. 进程在内存中的内存模型,代码正文段、数据段(初始化和未初始化)、堆、栈段。
  13. 问直播项目,如何在linux下开发的,我说在windows下开发移植过去的。

总结

本人是个菜鸟,决定学C++是从去年快十月份的,当时啥也不会,静下心来,花了两个多月看完了C++primer第五版,也敲了大量课本的示例,总算对C++有了大致的了解,接着就是STL源码剖析,第一遍好多地方不懂,没办法,太笨了,继续看,第二遍的时候好多了,面试官问STL就有的聊了,这两本书感觉是很有必要看的,接下来就是effective c++ 和 深入探索C++对象模型了。这两本书感觉挺难的,看完或多或少知道点对象模型和内存分布的知识,还是挺重要的。

接下来就是UNIX环境编程,说真的,好难啊,我第一遍只看了些理论,没怎么敲,结果当然是理解不够,后面面试碰到这块的知识点处处碰壁,现在准备好好敲敲,好好再看一遍。这本书感觉是很重要的啊,虽然难,没办法,得看。

算法主要看算法第四版和严蔚敏的数据结构,让我终于理解了各大排序算法的思想,也能熟练的写出来了,也懂了一些查找的数据结构,什么平衡二叉树、红黑树啥的,算法第四版讲的很好。

其他的像操作系统,网络和设计模式这些都大致看了一些,剑指offer敲了好几遍,还是有些题不太会,菜啊,leetcode刷了些easy的题,不太够,还是得多刷题。

数据库是硬伤,没怎么用过,连最基本的sql命令都忘的差不多了,主要是看数据库系统概论这本书,了解了最基本的数据库知识,后续还得多看看数据库相关知识。

面经最主要是参考这篇:https://www.nowcoder.com/discuss/55353
真的介绍的非常详细,面试的重点题型啥的,大部分在这里面都涵盖了,我当时就是买了个小本本,跟同学一块把最常见的题的解法写到本子上。这样方便记忆,虽然办法很low。

经历了这次春招,我终于知道自己有多水了,好多东西不太会,也没做过啥项目,感谢腾讯给的这次机会,以后一定得好好学习,好好学习。

祝大家都能拿到满意的offer,祝牛客网越办越好!

原文地址:https://www.cnblogs.com/threetop/p/9159857.html