0%

腾讯微信客户端开发一面

已通过


  • 上来先手撕三道代码, 题目不难,都算是经典题,但是给的时间稍微有点儿少,而且一上来就撕代码有点儿懵,导致一道很简单的链表翻转题没做好。。

  • 第一题是链表k个一组翻转

    • 一上来有点懵,边界老是处理不好,写了十分钟没写出来就去做后面两道题了,后面两道题比较简单,一会儿就写完了又回来接着做这个。
    • 老是处理不好边界,索性直接把链表存到数组里,在数组里处理,结果最后面试让解释一下代码的时候还是解释的不太清楚。。
  • 第二题是把数组的前k个移到最后

    • 开了个临时数组存,面试官问不定长数组会有什么问题,如果数组很长那么存在哪里
    • 问有没有更小内存开销的方法,问复杂度(这里答得有点儿混乱)
    • 堆栈的区别
    • 为什么要有堆和栈
  • 第三题是最大子数组

  • 问ACM竞赛经历,团队几人,怎么分配工作,过几题能拿牌

  • 问编译器项目,非常详细,一步一步地问

    • 词法分析怎么实现的,有没有比字符串匹配更好的方法,答了字典树,又问字典树为什么更好之类的
    • 文法分析,抽象语法树,递归实现,有没有比递归实现更好的方式,答了可以模仿字典树(这里答的不好,面试官说循环递归的问题字典树解决不了,就建不起来这棵树),除了递归和字典树之外还有没有什么方案(不知道。。)
    • 汇编代码生成是干什么的,为什么是四元式,解释了一下操作数操作符操作结果之类的。
    • 寄存器优化怎么实现的,答了引用计数法,问还有哪些地方会用到(内存页面置换),然后问了一些内存页面置换的问题
  • 虚拟内存,为什么要有虚拟内存,怎么实现的,页表,页和块

  • 进程间通信有哪些,管道是什么,套接字是什么,共享内存是什么,哪个最快(答了共享内存,不知道对不对)

  • 线程同步方式,信号是什么

  • 为什么要有线程,进程是什么

  • B+树是什么,有什么特性(答了叶子结点之间有指针),有什么好处(答了查找比较快和擅长范围查找)

  • TCP和UDP,区别,适用于哪些场景

  • HTTPS是什么,SSL具体怎么实现,为什么,对称加密和非对称加密的区别

  • 问科研项目

    • 持续时间,几个人在做,具体怎么实现,除了超声还有什么方式,wifi可以吗,红外可以吗,摄像头人脸识别怎么样,呼吸和心跳是怎么测得的等等
  • 问了开发的app,觉得哪个最好,讲了一下

  • 工作地点是广州,对于工作地点有没有想法

  • 反问环节

    • 问了面试官觉得我表现怎么样,有哪些方面可以提高,面试官说原理性的东西可以提高一下,比如做的编译器的原理细节等,思考更深入一点儿

总结:问了一个半小时多,是这么多面试里最久的,期间网络很差,换手机热点也很差,断线好几次,后来直接把摄像头关了。面试官问的特别详细,特别深,特别喜欢问为什么。知识点八股文方面答的还行,但是手撕代码和问项目这两个部分出了不少问题,感觉要gg了。。

Welcome to my other publishing channels