腾讯C++二面【求各位大佬帮我分析一下】
底部有我提出的一个疑问,求各位大佬帮我分析一下啊。
大概就记得一些了,供大家参考
一面:
1. 先问了大概30分钟的项目(我都不知道我的水项目能讲30分钟。。)
2.C++
问题一:空类占用的空间大小?为什么1字节空间?1字节空间里面存放的是什么?
问题二:怎么让类只能在堆上生成实例,而不能在栈上生成?我答的把析构函数私有化,但是面试官好像并不满意。。
问题三:struct 的对齐规则
问题四:C++多态?静态多态怎么实现的。(以前从来没有思考过静态多态怎么实现的。。然后就没有反应过来this指针。。唉~)
问题五:map用的什么数据结构?和unordered_map的区别?为什么有了unordered_map还要弄个map?unordered_map怎么解决冲突?开链解决冲突的话,如果链表过长应该怎么办呢?(跟我同学讨论,他说java是把链表变成红黑树。。我不了解,不过面试官也提示了,说知不知道java怎么处理,我说不知道,唉)
3. 操作系统
问题一:多进程和多线程,有什么优点缺点?
问题二:进程打开一个文件,并读取数据的过程。
问题三:线程之间的通信方式。(然后我回答到线程之间的同步方式了,不过我真的不知道线程之间怎么通信的,看书上讲都是可以直接进行通信的啊,然后我就跟面试官这样解释,然后面试官说知不知道消息队列。我就说我知道进程之间怎么用消息队列通信。。线程之间用消息队列我没有思考过。。)
4. 计网
问题一:讲讲socket建立通信的过程。(然后我就讲了socket的一下函数,不过我最近才刚看socket,就一点印象。。然后accept函数忘记讲了。。)
问题二:服务端建立socket的时候,四元组有哪些是确定的,哪些不确定?
5. 数据库
一开始问我知不知道netty(貌似是这样吧。。),然后我说不太懂这个,我说我知道点mysql
问题一:讲讲数据库数据恢复。(唉,这个点一直想看来着,当时就凉凉了,只能凭着一点映像说了点)
问题二:MVCC(然后问了我readview的建立时间,我就按照网上的普遍说法回答了他,但是他好像觉得有问题,一直问我。。到最后问的我自己都含糊其词了。。)
问题三:mysql是怎么建立网络连接的。(貌似是这个问题。。)(这个不懂)
6. 你知道分布式技术?(不是很懂。。)
7. 做算法题
题目一:最小栈,讲了思路,没写
题目二:有2.5亿个数,其中只有一个数出现两次,其他的数都出现一次。在内存紧张的情况下,怎么找出这个重复数?
题目三:IP地址转化为int型整数。
8. 反问阶段
一面进行了1个半小时。。
二面:
1. 算法题
问题一:反转链表
问题二:一个字符串,找重复字符(用数组hash就好了。讲了思路就没写了)
2. 智力题
问题一:有100个乒乓球,两个人,每个人每次只能拿[1, 5]个球,最后一次把球拿完的获胜,问怎么先手必胜?(讲了一下如何用dp方法进行推导)
问题二:一个5升的杯子和一个3升的杯子,量出4升的水。。
3. 然后开始聊天:
你将来什么打算?
准备做点实际的有价值的产品?
你想做前端还是后端?
我说我都很喜欢,但是更加偏向于后端
然后他就开始介绍他们正在做的方向。
并且说如果能进来可以在做调整(因为他们有多个方向)
又聊了一些,
后来我就挂了。
我觉得我一面答的确实不好,但是居然给我二面机会了,二面答的挺好的,问的问题都回答上来了。
所以最后的结果是把一面和二面综合起来看的吗?算一个综合分?
其实他最后介绍他们的方向一个是“分布式”,“一个是深度学习+数据库调优”,我简历上面也写了深度学习,但是我在最后跟他聊天的时候(我一开始并不知道他们是做什么方向的),表达的意思想做后端开发(因为我投递的是后端开发,所以就这样讲)。难道是因为这个???????