4.10晚上21:10 ~ 22:46总监面,总监是真的很有东西,整体感觉是中了月读一样被绑起来拷打面完直接emo,但是其实当晚就给我过了,第二天早上7点发现进HR了...尽可能回忆一下面经:1.自我介绍+挑一个项目讲讲(我是java,但挑了更契合业务的cpp项目讲)2.共享内存展开深挖。大概是这样:共享内存和分页有什么关系?要我当操作系统设计共享内存怎么建立内核态内存和用户态内存的映射关系?说mmap不够,要听更底层的,分页管理那一层的具体细节。分页怎么做,一个进程一个页还是怎么说?不同进程怎么用一个页?还是不同页?还是一个系统一个页?用不同页那怎么解决通信问题?(我直接被干晕了,没办法,只能竭尽毕生所学尽量分析)3.打开记事本充当白板,面试官手写一个CMyString *s = new CMyString(“hello”);让我分析这个s指针指的内存地址里第一个字节是什么,第二个字节是什么,按顺序这些字节里面装的都是什么?(我结合了java对象结构来分析的因为cpp的我确实不熟)4.追问,这种字符串类型你觉得合适吗?(不合适,扩容要创建新对象,所以我前面其实回答了字符数组类型存储)追问,你定义一个struct怎么改造一下?(我看过redis底层,我就说了SDS的结构)分析一下这个struct多大?5.基于3,4问题追问内存碎片问题怎么解决?叫我提出方案。6.常规数据结构算法,大量单词检索方法,我说了四种 B+树 字典树 hash表 布隆过滤器。要我分析时间复杂度。为什么字典树是O(n)n是单词长度,hash表就是O(1)呢?我以为我说错了他说是对的,这给我干懵逼了,后面根据提示我反应过来了答对了。反问:1.我感觉前面表现的不好。我问了要不要我这种java打算转语言的,他说给我一个希望我听进去的建议:这和语言没有关系,任何语言都是要学到操作系统和硬件层深入理解,语言的区别可能只有岗位薪资高低,业务的不同罢了。(面试提问期间也确实多次提到了学java容易让人忽略底层原理,(这里底层指操作系统和cpu内存那些设计))评估一个人要多方面考虑,分析能力,解决问题的能力,学习能力等等,觉得我还不错(安慰了一下)。2.没有技术面了面完直接emo,结果还是过了。#腾讯##腾讯云##腾讯云三面##腾讯云实习##java##客户端#