腾讯一面

日期 12.14 时间 10:00 -12:00 岗位 后台开发 形式 现场面试 结果 FAIL

鹅厂真的很看重基础,也面了好久。面挂了呜呜呜。

腾讯一面

日期 12.14

时间 10:00 -12:00

岗位 后台开发

形式 现场面试

结果 FAIL

流程&问题

笔试

现场面试都有笔试环节。笔试题目不方便说出来,都是一些非常基础的题目,但是非常细节,考虑得越全面越好。需要手写代码。大体方向:c/cpp基础,cpp容器,数据结构基础操作,数据库基础操作,linux基本命令,计算机网络基础,操作系统基础。

面试官判卷

在面试官的指导下修改了几道题目(之前题目的描述有点不清楚,面试官重申了题意)

提问环节

因为我操作系统还没学,编译原理学校没开,而且我告诉面试官我对计算机网络和数据结构比较熟悉,所以问题主要集中在这几方面。但是其实面试官最开始都是想问我关于操作系统,内存方面的问题。

(问题很散很多很基础很底层)

  • c与cpp都有哪些区别
  • 写一下五层结构
  • ip协议是哪一层,tcp协议是哪一层
  • TCP, UDP的特点
  • 介绍一下TCP的超时重传
  • TCP除了超时重传计时器还有什么计时器
  • 介绍一下TCP的滑动窗口协议
  • 滑动窗口在接受端还是再发送端维护
  • ip包的首部有几字节,分别有哪些字段
  • udp包的首部几字节,有哪些字段
  • tcp包首部多少自己,有哪些字段
  • 在链路层有ARP协议,简要介绍一下
  • 介绍一下mac地址,mac地址的构成,有几位
  • ARP协议是怎么实现的
  • 了解“粘包”的概念么
  • 介绍一下MTU的概念
  • 画一下程序在内存中的堆区和栈区
  • 32位机器,1G物理内存,最大寻址是多少
  • 进程和线程的区别
  • 知道全局解释器锁么,为什么python一般大家都用多进程不用多线程
  • 了解寄存器么,cpu是怎么知道应该执行的下一条指令呢
  • 介绍一下btree和b+tree
  • 平衡树概念
  • 如何判断一棵树是不是平衡树,手写代码

组长+面试官一起面

主要是对之前问题的补充

  • 可以实习多久?下学期课多么,可以请假么?
  • 介绍你的优势,你最擅长什么,或者介绍一个证明你学习能力的项目
  • 未来的规划

回放

笔试

时间45min,我用了20min,但是事实证明做得太快是不好的。因为很多看似简单的问题有一些小坑,需要比较细致的考虑。总而言之,笔试做出来一般不成问题,主要是要考虑全面。

做完题目之后给面试官打了电话,然后他开始看我的题目。最后一个手写代码题我对题意的理解和他想让我写的有一些偏差,重新确认题意后,他让我再重新写一遍。大概用了五分钟写完了,面试官说没问题。

最后稍微总结了我的笔试,说我有一个小错误比较不应该,剩下的题目做得不错,然后编程题第二次修改过后做得不错。

面试

面试官 学过什么语言

python, java, c, cpp

面试官 哪个最熟悉?

python用起来最熟悉,c,cpp语言细节最熟悉(其实内心非常慌,没有复习语言细节问题)

面试官 你了解c和cpp的区别么?

这个问题有点太宽泛了,可以具体一点么

面试官 你们学过编译原理么?

没有

面试官 嗯,那有点难问,因为很多区别是编译层面的。嗯…操作系统没学,编译原理没学,这怎么问呢,计组学了是吧

嗯学了。

面试官 cpu是怎么知道下一条该执行哪条指令呢?

通过一个program counter记录,在arm指令集里是r15寄存器。

面试官 你们学的不是x86么?

嗯,我们学的是mips和arm,都是简单指令集

面试官 那不问计组了,还学了啥?问问计网吧。你们学的五层结构么,写一下五层结构 (我写了一下)

面试官 IP协议,TCP协议分别是哪层呢?

网络层,传输层

面试官 ip包了解么,几个字节,分别由什么字段组成?

固定部分20个字节,(说字段真的有点懵,因为不能全背下来)。最开始的四位是版本号,然后还有源地址,目的地址,分别是4字节。嗯…我说了9个字节了,还有11个是啥来着…

面试官 好了好了,不用想了(笑)。并不要求你全部记住,记住最重要的几个和整体结构就行了

(后面我又依次回答了tcp,udp的报文格式,感觉要呕吐了)

面试官 tcp,udp都有什么特点

(回答了tcp,udp特点)

面试官 三次握手四次挥手你肯定都知道,我就不问了。介绍一下tcp的超时重传

超时重传是tcp维护一个计时器,超过timeout的值就重新发包。

面试官 除了这个计时器,tcp还维护什么其他寄存器,你了解么?

不了解

面试官 tcp的滑动窗口在哪边维护,接收端还是发送端

这得看策略,是go back n还是selective repeat

面试官 你说一说

(我讲了一遍但是感觉他并没有听懂……. 后来我才想起来tcp实现的是go back n的策略,所以应该是在发送端维护的)

面试官 你了解mac地址么,它是怎么构成的

mac地址是唯一表示网卡的地址,每个网卡出厂就有一个。构成不了解。

面试官 链路层arp协议你了解么

arp协议实现了从mac地址到ip地址的映射

面试官 怎么实现的呢?

(我简单介绍了一下交换机广播学习的过程)

面试官 知道一个概念叫“粘包”么?

不知道

面试官 (给我介绍了一遍粘包……)

面试官MTU这个概念你了解么

这是链路层所能传输的最大数据包大小。

(讨论了一会MTU,面试官介绍了一会在工程中这个东西的重要性,其实我在想这些不是应该由我来说么…)

(他还是很纠结我没学过编译原理和操作系统,感觉没什么可问的了,然后我提示他虽然我没学过,但是我写过,我发现这其实是给自己挖了个坑)

面试官 进程和线程有什么区别你知道么

(面试前一天背的标答)进程是资源调度的基本单位,线程是程序调度的基本单位

面试官 为什么大家写python,一般不用多线程而用多进程,你知道全局解释锁么?

不了解。(其实有点后悔,之前一直听别人说python多线程菜,但是没仔细研究过)、

面试官 你python是自学的还是学校教的

自学的(感觉面试官在给我台阶下)

(面试官又开始思考问什么,我说要不你问我数据结构吧 (我又成功给自己挖了个大坑。。。。))

面试官好,数据结构。嗯,先来介绍一下B-tree和B+-tree吧,这在数据库中很重要

不好意思,我不了解B-tree和B+-tree,但我对平衡二叉树很了解

面试官说一下平衡二叉树的定义吧

(说了一下定义)

面试官写个程序判断一棵数是不是平衡二叉树。

(手写代码)写了个递归计算了一下树的深度,然后写了函数判断左右子树的高度差<1。但是悲剧的是我忘记写递归判断每个节点的左右子树深度差都<1了,面试官指出来后,让我修改一下。

面试官 我先去和组长汇报一下你的情况,你在这里等一下。(此时已经面了1:40分钟了,非常的累)

(5min后主管和面试官一起过来了)

面试官补充几个问题。你可以实习多久呢?

(然后我发现腾讯实习必须全勤,所以只能寒假全勤,之后他问我下学期能不能请假过来,我说下学期要学操作系统,应该不能请假。)

主管 介绍一下你最擅长什么,你的优势,或者举一个项目证明你的学习能力。

(这个问题问的我很慌,最怕被问到关于优势,因为感觉并没有很显著的优势,最后给他讲了我们人工智能课上的imp项目,讲了自己做的一些优化,但是我感觉面试官并没有太懂。。。)

面试官 看到你成绩还不错,你以后是不是打算出国深造啊?

(这个问题也让我很懵。。。如果我说是的话是不是直接就凉了,但是又感觉应该如实回答,最后我说了没想好。其实这个回答不太好,应该不能那么模棱两可)

面试官 继续确认了一下我寒假能实习的时段之后结束面试。

感受&反思

  1. 笔试考察基础,需要考虑好细节。有做不出的也不用担心,可以直接告诉面试官自己没用过或者不了解。会做的一定要做好。
  2. 腾讯的面试真的非常看重基础,回答一定要确定,不要给出模棱两可的答案。
  3. 最好面试之前把自己优秀项目的介绍整理一下,不要凭空想,不然面试一紧张很有可能介绍得让人听不懂,尤其是那种比较偏科研的项目。