面了大约1h26min
开头问实习时间
1.项目相关,简单介绍
2. http和https的区别,https是如何实现加密的?
3. 你刚才说到客户端会对证书进行确认,那服务端会不会确认客户端的?也就是双向确认?
4. 用过哪些STL?它们是线程安全的吗?
5. 讲讲strcut的内存对齐
6. 析构函数为什么要加virtual
7. 虚函数表是一个什么样的结构
8. 什么是线程安全?
9. 实现线程安全的方法机制有哪些?这些机制你有没有用过?
10. 自旋锁怎么实现?
11. 信号量需不需要加锁?
12. 什么是智能指针?怎么用?
每个问题都追的挺深的。
算法:
一共给了30-40min左右
- . 力扣106,用中序遍历和后序遍历还原树
- 数字和为sum的方法数
第二题一开始想的是递归回溯。但是最后只通过50%的样例。
最后给面试官讲完思路后,问我有什么优化思路。
先想到排序,再做剪枝;后面又想到既然是递归,应该可以动态规划。面试官表示是这样。
最后提问环节,问了一些建议。面试官说可以看出我代码能力还不错,是练过的。其他方面也还行,虽然不够深入,但对本科生来说也无可厚非。建议我选定一个方向深挖。
以及,建议大家投简历的时候,如果岗位不同,记得改一下。。我建立上写的是c++研发,投客户端,面试官还疑惑地追问我…
总体来说感觉还可以,面试官声音好听,人很好。听说腾讯音乐很多都kpi了,有这个心理准备。许愿二面吧!
二面1h46min
这是个大boss,应该是主管leader级别
1.上来就是先做一道算法 ,m个相同的苹果放到n个不同的盘子,有几种分法?
2. 问项目,疯狂拓展,啥都问,这里不展开。项目穿插了一些基础的八股。
3. https的加密过程。非对称加密和对称加密的区别
4. 说说你理解的多线程,以及死锁如何解除。
5. 如果是我应用程序在资源分配时发生死锁,你如何检测?
6. 说说你对c++的理解。我展开说了三大特性:封装,继承,多态。
7. 说说NAT
8. 你觉得IM用的是udp还是tcp,udp如何实现可靠传输?
9. top-k问题
10. 10000个数,范围1-1000,找到重复的
11. 深度学习项目,你们做了哪些比较独特的工作?
12. 你投了客户端,有没有去学习,了解过客户端的相关知识。
13. 指针和引用的区别是什么?
14. 能实习多久
15. 介绍一下智能指针
总结一下:
由于是boss,所以问题基本都是围绕一些场景,穿插一些八股。基本都在我的知识命中范围内。不过有些话说得比较啰嗦。
面试官很考察对知识的理解,他不只听你背的教条,更想听你个人的理解,和生活的结合,强调学以致用。
面试官一直在看他的电脑,估计是在一边工作一边面试,态度还好,每个点问完他都会总结一下,把他知道的讲出来,不像某些面试官问完就拉倒,对错都不解释。
感觉良好,过了应该就是hr面啦!!!
疯狂许愿!!!!
三面 大约1h
这个面试官咖位也很大,但是看着很面善,说话很和蔼,没有压迫感,聊起来很轻松
- 介绍项目,讲讲最能展现你能力的项目。然后针对项目一些细节原理追问了一些
- 内网穿透原理是怎样的?
- 网络模型有哪几层?讲讲数据链路层和网络层的区别。已经有ip地址,为什么还需要mac地址
- 主机和服务器之间如何保持连接不断?
- 如果ip地址发生了变化,是如何通信的?
- 403状态码是什么意思
- 如果我下载一个图片,但是下载失败了,你分析一下可能的原因?
- 如何判断一个树是另外一个树的子树?
- 如何判断一个字符串是另一个字符串的子串?(答了KMP算法,但是细节忘记了)
- 讲讲C++的多态你是如何理解的?
- vector这些STL是线程安全的吗?你如何理解线程安全?
- 用哈希表查找和用二叉树查找,有什么区别?他们的空间复杂度分别是多少?
- 哈希表为什么会出现空的桶,出现稀疏的情况?
- 如何理解抽象的概念?
- 设计模式知道哪些?用来解决什么样的问题
- 一个朋友,有两个孩子,已知其中一个是男孩,求另一个是女孩的概率 (1/3,但是我还肯定的说二者是独立事件,概率就是1/2…)
- 让你评价一下自己,你觉得你的优点是什么,缺点是什么?
最后反问的时候,问面试官部门,面试官介绍完后,问我,你为什么想要问这个问题。我说我有复盘反思,做规划的习惯。然后借机说了上次二面之后深入了解的一些东西。面试官很满意,说是个好习惯。最后表示希望你能来实习。
状态已经变为hr面啦!许愿offer!