腾讯春招面试总结

3月11日 PCG部门技术一面(42分钟)

面试问题

  1. 确认了投递的基本信息和意向城市
  2. 简单的自我介绍(没必要说还没有研究的内容)
  3. Linux下进程和线程的区别?
  4. 你平时写程序的时候是多线程用的多还是多进程用的多?(作死说了多进程,多进程虽然稳定但写起来更难,失分点)
  5. 什么样的场景下适合用多进程来写?(说了从稳定性考虑是多进程更好,但是没有实际编写对比过,失分点)
  6. 协程的概念了不了解?(不了解,这方面是Go相关的,失分点)
  7. Linux下进程的调度算法有哪些?(不了解,失分点,面试官后来建议我可以补充一样这方面的知识,对之后的学习很有帮助)
  8. Linux下IO调度的东西有了解吗?(说了基本的IO模式,说了三个函数)
  9. 说一下select,poll,epoll三者的差别?
  10. 为什么select,poll一个长度有限制,另外一个没有限制?(面试官解释说我提到是用法,他想知道底层的实现原理)
  11. 大端模式和小端模式有什么区别?(不了解,失分点)
  12. MySQL的事务是怎么理解的?(答偏了,直接讲性质了,失分点)
  13. MySQL事务的一致性是如何实现的?(面试官还是提醒应该懂底层实现而不是会暴露的接口,失分点)
  14. MySQL的慢查询有了解吗?(讲了基本概念)
  15. 设置慢查询的时间上限是多少,为什么这样设置?(回答了10s,但是没有理由,应该是根据业务场景来看)
  16. 索引的数据结构?(不要说印象中,好像这样的词汇,这样说显得不自信)
  17. 为什么MySQL的索引结构会用B+树?(得分点,详细比较了bitmap,hashmap和B+树,得到了面试官的认可)
  18. 我看你是网络空间安全专业,问几个网络安全相关的问题?
  19. 解释一下SQL注入的基本原理?(讲了基本概念)
  20. Web里的XSS攻击以及CSRF攻击有了解吗?(讲了基本概念)
  21. 如何预防XSS攻击?(做过滤)
  22. 有没有用过HTTPS,与HTTP的区别?(得分点)
  23. HTTPS的认证过程?(讲了一些性质,说的一般,面试官说我大概看过,但是说的不够准确)
  24. HTTP里面PUT请求和POST请求的区别?(从安全性和幂等性将了,但面试官不是很满意)
  25. 你的服务高负载了,你要去排查原因?(只说了Java相关的命令,而不是Linux下的指令,说了服务器卡在time-waited状态,说错了,一般是卡在close-waited状态)
  26. 服务端产生大量的time-waited状态,如何去解决?(提前结束等待,面试官说思路正确)
  27. TCP与UDP的区别以及使用场景?(长回管道了解过吗?)
  28. TCP的滑动窗口和拥塞窗口分别是什么概念?
  29. 滑动窗口除了流速匹配之外还有什么区别?(相比最原始的单个确认提高了效率)
  30. 说一下拥塞窗口具体的工作原理?(没有答上来,失分点)
  31. 说一下使用的排序算法?分别适用在什么场景?(得分点)
  32. 给一个字符串,如何判断是否有重复的字符?(使用Set和HashMap)
  33. 哈希冲突用什么方法解决冲突?(只答了一个)
  34. 知道一致性哈希嘛?(得分点,但是不深入)
  35. 如何保证数据尽量的均匀的分布在环上?(环应该割在哪里?)
  36. 从N个中选出M个,打印出组合排列问题?(使用递归,但是截至条件没有说对,失分点)

提问环节

  • 面试官所在的事业组是哪一个呢?(QQ空间,微云,天天P图,1200多人,三个部门)
  • 日常是做哪方面的业务开发呢?(基础算法可以就OK,对语言没要求,使用C++和Go语言比较多)
  • 对我有什么建议吗?(校招生对概念至少要掌握,社招的话希望能听到更深层次的东西,你的基础覆盖的还不是很广,尤其是操作系统这方面,能讲出概念,结合自己的实际经验讲出自己的理解,就能达到优秀的标准)

回顾总结

  • 人生第一次大厂面试,一来就是腾讯,第一次面试暴露了很多问题,比如遇到不会的问题时说话结巴重复,知识点的覆盖不广(主要是遗漏了操作系统,网络也忘了很多)。
  • 腾讯的风格就是喜欢问操作系统和计算机网络,当然还有C++(可惜我不会,所以没问吧)。
  • 由于是网络空间安全专业,常见的网络攻击和HTTPS是必考点。(无奈)
  • 学习知识点不能停留在表面,只知道使用,还有去了解他背后的实现原理。(醍醐灌顶)

3月13日 PCG部门技术二面(85分钟)

面试问题

  1. tcp三次握手过程?(加分点)
  2. Java里有用到accept函数(有啊)
  3. accept函数在三次握手中的什么过程中呢?(监听状态,在tcp之前)
  4. 平时有用过linux下的网络编程吗?(比较少)
  5. 断开连接要几次挥手?为什么是四次而不是三次呢?(半连接关闭)
  6. 断开连接的时候的time_waited状态?(第四次挥手的包丢失的话还能接受到;避免断开后马上连接导致的数据包混淆)
  7. 除了Java之外有用过其他语言嘛?(短暂使用过Python)
  8. Java的多态是用什么实现的?(说了重载和重写,其实是答错了)
  9. C++有了解吗,C++中的虚函数和Java中的啥有对应关系?(接口嘛,从多继承,组合,实例化等角度讲了)
  10. 当时为什么选择Java作为编程语言?(菜是原罪)
  11. Java的优点和缺点是什么?(优点是垃圾自动回收,接口的思想,跨平台;缺点是性能能差一点)
  12. 说一下快速排序算法的原理,平均复杂度,最差复杂度?(平均复杂度说错了居然。。。还好最差复杂度现场推导了出来,失分点)
  13. 排序平时有用到吗,不同的排序算法之间的差别是什么?(简答的讲解八大排序算法)
  14. 排序中的稳定是什么意思?(一开始说错了,后面说对了相同的元素的先后顺序在排序之后不变)
  15. 为什么要考虑稳定性?(一开始表达的不好,在面试官的引导下说的好了点)
  16. 进程在内存中的分布?(讲了jvm的内存模型)
  17. linux里面的堆和栈的区别?数据结构上有啥区别?(栈的话先入后出,堆的数据结构不太明了,感觉和基于二叉树的堆不一样)
  18. 说一下你理解的数据结构中的堆是什么?(二叉树堆的那些性质)
  19. 队列是一种什么样的数据结构?(先进先出)
  20. 有用过什么队列的组件没?(Redis的IO复用里有队列)
  21. 什么时候需要用到队列?(先来先得的顺序性要求)
  22. 看你简历里面有写到kafka?(作死啊,不要写不熟悉的东西)
  23. kafka是不是一个队列?(不确定,作死啊)
  24. 写了掌握MySQL,讲一下MySQL的主从同步的机制?(说了Redis的代替过去了,得分点)
  25. 当时使用Redis的主从同步解决了什么问题?(因为Redis放在内存里,比数据库放在磁盘里更加不靠谱)
  26. 除了单点容灾,主从的方式还有什么优点?(说不上来,当时还不懂读写分离等知识)
  27. 两台机器的读写都放在一台吗?读写都在一台会有什么问题(面试官在引导我,都放在一起导致性能浪费)
  28. 很多场景是写少读多的场景,读一下子到好几千qps?(说了结果,没有说解决方法)
  29. 那你觉得这种方式可以如何去优化呢?(横向扩容或读写分离,终于答到点子上了)
  30. 读写分离会什么坏处吗?(一致性问题)
  31. 一主一备的情况下读写会这么做?(主写从读,但是自己说错了)
  32. 为什么要主服务器去写,从服务器去读?主备的区别是什么?(答错了,面试官在问主从读写,我在回答主备容灾方面的问题)
  33. 主从同步有没有方向性?(面试官在引导我回答出一致性问题,读可以有延迟性,但写必须是实时的,且如果写放在从服务器上的话,由于网络原因,可能写操作会被同步数据给覆盖掉)
  34. 你自己的那个微信端零食超市项目适合读写分离吗?(get和post的请求频率差不多,被追问是多少?露馅了)
  35. 说一下你的应用场景到底是怎么样的?(被压力问了,这个问题回答的还不错)
  36. 你的这个项目后台有去看过数据吗?不怕服务扛不住吗?(说白了,就是在确认你这个项目到底有没有真的上线)
  37. 网站的并发性能很差是怎么看的呢?(ab压测,后面讲了解决超卖的思路)
  38. Redis的分布式锁是如何实现的?(setnx和expire命令,这个是老方法)
  39. 锁的是什么信息?(热点商品的id,其实是细化了锁的细粒度)
  40. 当时的server有几台啊?(面试官其实起疑心了,就单台机器还分布式锁?)
  41. 服务器是部署在哪里的?(实验室。。。被面试官怀疑项目真假)
  42. 两根不均匀发布的木棒,烧完都是一小时,我需要烧出15分钟,怎么弄?(考虑了很久,答出来了)
  43. 从数学的角度或者建模的角度证明一下为什么两段开始一起烧,烧完的时候一定是30分钟?(其实可以用两个数学公式解决,A+B=1,A=B,AB代表烧到交点的时间)

提问环节

  • 您所在的组是?(阅读类,电台类)
  • 之后有什么建议呢?(其实一次面试看不出很东西,学生阶段的话基础很重要,要自己多动手多写代码,基础方面可以研究的更加深入一点,再多看一些网络和C++的东西,最后的思考题不要那么快否定自己的答案)

总结

  • 这次面试收货很大,明显能感觉到面试官在慢慢的引导我回答出问题
  • 这次面试也算是一次压力面吧,面试官一定会问到某个点到不会为止,但是应对压面还是要保持乐观,用于尝试
  • 这次面试的风格非常注重逻辑思维,面试官自己也说不在于答案,而是在思维的过程,尽管很多问题我都答错或者没有答上来,但好在经过面试官的引导后回答上一点
  • 这次面试带来的提升非常大

3月18日 PCG部门主管三面(41分钟)

技术问题

  1. 花一分钟做个自我介绍(50秒。。。没有讲出重点,应该往技术方面,研究方面去讲)
  2. 我看你主要是用Java语言是吧?
  3. 简历上写着rabbitMQ和kafka,讲一下两者的优缺点?(作死,简历上不要写不熟悉的东西)
  4. rabbitMQ相对于kafka就没有优势嘛?(答不上,不自信,大失分点)
  5. Redis如何做分布式锁?(setnx和expire函数)
  6. Redis分布式中的那个setnx是可靠的嘛?(不可靠)
  7. 两个操作的组合原子性不是可以用pipeline嘛?(没有使用pipeline,而是使用getset进行了优化,感觉面试官不是很满意)
  8. Java里面如何创建线程?(答错了,应该是回答线程池或者新建线程)
  9. 你平常有用过多线程嘛?(其实这么多次面试下来,面试官都关注对知识点有没有实际使用,之后需要注意)
  10. Java中实现接口和继承Thread类哪种会好一点?(实现接口,灵活组合,但是事后觉得也不是绝对的,简单的开启多线程,可以使用匿名类的方式,此时继承自Thread类写起来很方便)
  11. Java里面创建对象有了解吗?(new创建和反射方式的创建,这边扯到啥显示创建和隐式创建,画蛇添足)
  12. 还有别的方法吗?(还有反序列化,复制clone,但是自己没有答上来,不知道就该果断说不知道,不要浪费时间)
  13. 说一下三次握手?(吐了,OKOK)
  14. TCP都有哪些状态?(状态机没有说上来,失分点)
  15. 或者说一下哪个状态会影响服务器的性能(主要是close_waited状态,但是没有说上来,不知道自己当时怎么想的)
  16. 我看你是硕士,说一下HTTPS与HTTP的差别?(准备过,加分点)
  17. 如果没有证书就不能加密传输嘛?(提前协商好密钥也行,https本身不强调使用证书)
  18. 知道什么是网络字节序嘛?(不知道。。。)
  19. 进程间通信有哪些方式?(说到了信号量和互斥锁,面试官说这个是同步的东西)
  20. 有一个正整数,如何判断是否是二的幂次方?(答的稀里糊涂,失分点,估计是这里答的太差被淘汰了)
  21. 两条单向链表,在某一点相交,找到他们相交的第一个节点(直接答了LeetCode的最优解法,但是没有讲简单到最优解法的思路,也没有分析复杂度,自以为答的好,其实答的不行)
  22. 智力题有一个车间生产洗衣粉,有10条生产许线,都生产1kg的洗衣粉,有一条出现问题了,只能生产900g,有一次机会使用电子称称出重量,如何设计?(还有答上来了,但是没有弥补之前两道算法题的重伤)

提问环节

  • 腾讯对于实习生的培养计划是怎么样的?(会有公司统一的培训,一到二周,企业文化和办公技能,业务团队里面有的年份会有迷你项目,分配产品开发测试做一次项目,来一次汇报,有的时候会跟着业务团队做事情,业务团队里面会安排导师花1到2周进行学习,linux,模块熟悉,组件熟悉,小bug改进,小需求完成,希望实习生三个月以上,否则看不出学习的能力)
  • 腾讯哪方面是最吸引您?(企业文化,10年工龄,个人想法不一样,腾讯的理念和做事方式比较能认可,工作踏实)
  • 对我们实习生有什么建议或者期望吗?(基础要好,学生阶段做好学生,对IT行业是不是真的感兴趣)

总结

  • 这次的面试自我感觉知识点上虽然不足但是回答的还行,主要是两道算法的回答都过于差劲
  • 这次的面试官人很好,在提问环节认真的回答了我的问题,也很感激

3月27日 CSIG 部门技术一面(16分钟)

技术问题

  1. 先自我介绍一下(1分20秒)
  2. 讲一下最近的一个项目(2分钟,讲的不清晰)
  3. 讲一下项目还能在哪方面进行改进?应对高并发的情况下(数据库主从读写分离,Redis做集群,业务拆分)
  4. 业务拆分后如何通信?(消息队列)
  5. 对象的序列化要怎么做?(没有研究过)
  6. Redis缓存存的值是什么?(商品id作为key,valve是时间戳加超时时间)
  7. 为什么这样设计缓存的k-v?(应对超卖现象,讲的还行,得分点)
  8. 如何分析系统的瓶颈?(ab压测,出现超卖,debug找到出处,然后考虑数据库,讲的还行)
  9. MySQL里有哪些常见优化的办法?(慢查询优化,讲的还行)
  10. Redis里的数据淘汰是怎么做的?(还没有研究过)
  11. Java里面有一个支持高并发的HashMap(ConcurrentHashMap,讲了JDK1.8前和后的实现关键点,从锁细粒度去回答)
  12. 加上数据清零的机制怎么办?(LRU的思想)
  13. LRU的实现方式?(数据机构上用到双端链表,和哈希表,然后从get,put的逻辑上解释)
  14. 你在linux下查看操作系统的负载用什么?看什么指标?(top指令,cpu,内存啥的)
  15. awk有用过吗?(没有实际使用过)

提问环节

  • 没给机会

总结

  • 项目介绍不清晰,也是这次开始,我后面好好准备了一次项目介绍逻辑
  • CSIG面试感觉有点水,敢时间,都不给提问的机会

3月29日 CSIG 部门技术二面(11分钟)

技术问题

  1. 先简单的自我介绍一下(1分钟)
  2. 为什么学Java呀?(菜呗)
  3. Java里的反射机制讲一下?(加分点)
  4. C++里面有这种机制嘛?(不熟)
  5. 没有实际项目的话,说一下HTTPS整个协商的过程?(加分点)
  6. 数据库里面有哪几种索引?不同的索引用在哪里?(前面在讲索引的数据结构了,跑偏了)
  7. 为什么不把所有的字段都加上索引呢?(准备过,加分点)

提问环节

  • 不给机会

总结

  • 一面懵逼,感觉CSIG疯狂找人

3月29日 CSIG 部门HR面(16分钟)

技术问题

  1. 简单的自我介绍一下(1分半,太紧张了)
  2. 研究生在南京读,本科在上海读,为什么来深圳呢?(腾讯总部在深圳,自己对工作地点无所谓)
  3. 家是哪里的呀?(浙江)
  4. 为什么不选择阿里巴巴?(又强调了一次对外面世界的向往???)
  5. 能简单介绍一下家庭情况吗?(不细讲)
  6. 爸妈支持你出来吗?(支持)
  7. 有女朋友吗?(没有)
  8. 有面试阿里的机会吗?(还没准备好)
  9. 连阿里的机会都不先去争取一下吗?(可能之后会投,但是没考虑好就不先急着投)
  10. 目前有其他的公司在面试吗?(网易互娱)
  11. 平时会有什么兴趣爱好?(DIY,跑步,电影)
  12. 你学的网络空间安全,是偏安全还是偏网络?(安全协议)
  13. 2020年7月毕业是吗?(其实5月底就可以走了)
  14. 专硕还是学硕?(学硕)
  15. 什么时间能来腾讯?(6月到8月)
  16. 代码量怎么样?(没有实际上线,但是把流程都过了一次)
  17. 自学中遇到的困难是什么?(很多东西深入后只能找书啃)
  18. 自己有什么地方是需要提升和加强的?(技术上没有实际项目,差了点)
  19. 在为人处世上有什么需要提升?(无法按时达到要求会陷入负能量)
  20. 做事计划性比较强对自己又什么帮助呢?(工作效率高)
  21. 体检是健康的嘛?(健康)
  22. 有亲戚在腾讯嘛?(没有)

提问环节

  • 没有给机会

总结

  • HR面问的问题都很直击心灵。。。老老实实回答就行