日期 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项目,讲了自己做的一些优化,但是我感觉面试官并没有太懂。。。)
面试官 看到你成绩还不错,你以后是不是打算出国深造啊?
(这个问题也让我很懵。。。如果我说是的话是不是直接就凉了,但是又感觉应该如实回答,最后我说了没想好。其实这个回答不太好,应该不能那么模棱两可)
面试官 继续确认了一下我寒假能实习的时段之后结束面试。
感受&反思
- 笔试考察基础,需要考虑好细节。有做不出的也不用担心,可以直接告诉面试官自己没用过或者不了解。会做的一定要做好。
- 腾讯的面试真的非常看重基础,回答一定要确定,不要给出模棱两可的答案。
- 最好面试之前把自己优秀项目的介绍整理一下,不要凭空想,不然面试一紧张很有可能介绍得让人听不懂,尤其是那种比较偏科研的项目。