我的offer之路

腾讯

提前批 后端C++

2019/3/22/16:00/34mins

​ 扎心了,第一次面试就是面的腾讯爸爸。约的是视频面试,我还特意画了个妆,结果是电话面试ORZ。

打招呼

  • 看你最近在刷题?(他有我微信)是的。那我看你的笔试分数不怎么高呢。emmm,我当时按错了,以为后面有选择题。面试官:别紧张,我就调侃你一下。(我真的超紧张。

  • 自我介绍:本科专业。研究方向。做的项目。

问题

  1. 单向链表逆转:我突然脑子短路,直接问提示。之后我说用三个指针从头开始遍历……打断:简单描述。我脑子一团浆糊:没有说清楚。“你说的也差不多是那个意思。”我后来发现我连函数入口检查的鲁棒性测试都没有讲。
  2. 数据库,B树,B树索引:不会(见:B tree,B+ tree,B* tree,RBT,AVL
  3. 2G内存怎么实现:hash表。“hash表???””不清楚,大数问题没看,bitmap?”“……下一题”
  4. TCP三次握手四次挥手:不会。(见:Understanding the TCP/IP protocol suite
  5. 快排:随机取一个数,从头到尾遍历数组,小的放在这个数左边,大的放在右边。“时间复杂度?”:nlogn。为什么:因为是用二分法的思想,所以是对数。稳定吗:不稳定,最差n^2。为什么会n^2:因为随机取得数可能没有取好。
  6. Linux进程查看:不会。
  7. 虚函数:多态的实现,基类的虚函数需要在派生类中实现,动态绑定的时候,系统会根据虚表找到调用对象所指的虚指针,然后在程序运行的时候,去调用重写的虚函数。(自我感觉很啰嗦
  8. G是F的基类,F是C的基类,C还可以有继承么:可以,只要没有声明final就可以,C++11的两个关键字final禁止重写,override显示声明是虚函数。
  9. C继承于F,并且向上转型,调用的重写方法是哪个对象的:C的,系统会找到虚指针,然后根据C对象的this指针,放入到调用方法的参数中。
  10. 堆的实现:STL里面有一个优先队列和multiset.优先队列是最?堆实现的。multiset是rbt实现的最?堆。(我忘了,复习过但是没掌握好。)简单的说说建最小堆:跟堆顶比较,如果比堆顶大就放右子树,然后再和右子树比较。如果比堆顶小,就交换位置,然后堆顶放左子树。(我没有掌握好。看过一点
  11. 内存泄漏:指针没有初始化,可能指向某个未知的位置,野指针。或者一个变量在离开作用域之前没有释放掉他的资源,后面无法获取这个变量,就不能释放了,会造成内存泄漏。这就是基类的析构函数要定义成虚函数的原因。(自我感觉很啰嗦
  12. mvc:是.Net的一种设计模式。mvc分别代表什么:m是模型。v是视图。c是控制器。作用:模型是对象。v是前端交互。c是业务逻辑访问。(大概是3-4年前做得一个项目,我都忘了mvc是什么了。很久没碰了。
  13. 在公司做什么:客户端框架插件的设计。(其实没什么很大的进步
  14. 讲讲数学建模竞赛的项目:多维度的数据分析,用的pca降维,然后预测。(啰嗦,被打断
  15. 用过java吗:没有,但是可以学。“我们这个应用java缺人。。”“…”

提问

我有什么需要提升的地方?

  • 语言组织方便欠缺,最好要简短精确地回答问题。(我承认平常跟人类交流沟通少了,另外知识体系网络不够扎实,脑海中地逻辑结构不是很清晰。需要每天自省,做过的题目要好好地review,掌握牢固。深入消化理解。

  • 如果是后台开发,对计网需要了解,tcp/ip这方面要看一看。(我应该去补补这种基础课,虽然不是科班出身,但是志愿的行业无论是服务器还是游戏都需要扎实的基本功。

什么时候会收到消息?

  • 如果有其它部门捞你的话,会给你发邮件的。

总结

这可能是我离鹅爸爸最近的一次吧。我对自己的反思:

  • 不够自信:导致对话的时候居然有点颤抖,不自信的原因还是因为自己没有准备完备,这样给面试官的印象不会太好,可能会觉得我这个人不靠谱,不干练。

  • 知识网络没有构建好:还有很多基础性的知识我都没有答上来。尤其是计网,操作系统,Linux。需要恶补。还好c++的问题都比较熟。数据结构的回答不是很好,可能刷题有点盲目,需要对刷过的题目有很深的理解,经常复盘。

  • 态度问题:我可能开始就觉得没有希望,所以准备的也不是很完备。但是这一次面试之后,我的信念更坚定了,已经迈出了第一步,开始认认真真地复盘。这次的面试给我了一些希望,我觉得只要努力,有准备,还是有机会的。

写在后面

这几天有点沉迷玩博客的构建了,把春招这事看得很佛系,本来基础并不是很好的我貌似也没有把春招看得很重要,主要把宝压在秋招了。现在看看还是应该给自己更多的压力,对自己要求高一点。另外昨天看了猪厂的游戏引擎沙龙分享,我对进入游戏行业已经迫不及待+蠢蠢欲动了。


阿里

2019/3/25 企业智能/16:40/9mins

面阿里就是用来自闭的。

开头

  1. 自我介绍
  2. 为什么面阿里
  3. 做过什么项目吗?

问题

  1. 链表和数组的区别:数组:随机访问性强、查找速度快;插入和删除效率低,可能浪费内存,内存空间要求高,必须有足够的连续内存空间;数组大小固定,不能动态拓展。链表:插入删除速度快;内存利用率高,不会浪费内存;大小没有固定,拓展很灵活;不能随机查找,必须从第一个开始遍历,查找效率低。
  2. 环形链表的入口节点:确定是否有环,双指针一个走一步,一个走两步+环的个数计数;找到的入口:两个指针,一个先走n步,另外一个再走,两个指针相遇就是环的入口节点。(见:LeetCode141. Linked List Cycle
  3. 链表的中间节点:一个指针一次遍历两个节点,另一个节点一次遍历一个节点,当快指针遍历到空节点时,慢指针指向的位置为链表的中间位置,这种解决问题的方法称为快慢指针方法。(见:LeetCode876. Middle of the Linked List
  4. OSI模型七层结构:物理层、物理链路层、网络层、运输层、会话层、表示层、应用层。(见:Understanding the TCP/IP protocol suite

后记

电面官:学生时代还是要把学校的课上好..(我自闭了QAQ)

Thanks for Support.