2015腾讯暑期实习武汉站面试经历

本文记录了作者2015年腾讯暑期实习在武汉的面试经历,从一面的leader到二面的总监,再到三面的HR,详细描述了面试过程。尽管来自非985高校且无项目经验,但通过积累的面试经验和扎实的技术基础,作者成功通过了面试,揭示了面试中积极态度和适应能力的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        不得不吐槽一下腾讯的面试短信。在面试前一天(13号)晚上十点半才收到,通知14号下面四点半面试。我赶紧去楼下打印了两份简历。后来看了一下列车时刻表,其实也不用太赶。第二天坐上十点半的动车从南昌出发去武汉了。细节不表了。

        先介绍一下我自己是南昌大学的,非985,不是很有名气的211。在面试腾讯之前也有过两次失败的面试经历,虽然失败过两次,但也掌握了不少经验,不只是技术方面的,还有面试技巧方面的。所以说有面试的机会,大家都应该去参加一下,即是过不了,经验也是蛮宝贵的。在去武汉的动车上,我心里也是没底,总结了自己的三大软肋:

 

  1. 学校一般。(非985高校。武汉高校众多,除了华科武大以外,其他学校也是蛮不错的)
  2. 没项目经验。(这点不仅是软肋更是硬伤)
  3. 本科。(实际上本科生还是应该有自信才好)

 

        我面试的岗位是后台开发。不过此后台非彼后台。很多人一听到后台,就以为是web后台:java web、php什么的了。腾讯的后台指的是Linux服务器开发。涉及C/C++网络编程等技术。总体来说,两个面试官还不错,问的问题也比较基础,大概是因为我是本科生的缘故吧。其实我也有没答出来的。但是他们似乎也并不要求百分百正确,没那么严格,就让我过了。所以说他们人都比较nice。听说其他后台开发的面试官还有考察英语的。。(为我的面试官默默点赞。。)

一面:leader

leader低着头:说说你的项目经历
我惊了,我没项目经历:……没,之前学android的时候做过app,学Qt时候做过计算器,现在Linux C/C++倒是没做过。(我报的岗位是后台开发linux c/c++)
leader:哦,都是图形化的东西,后来怎么不学android了。
我:后来发现对于偏底层的东西更感兴趣,应用层开发不太……
leader:很多人觉得底层就比应用层的好,实际也不是。学着学着android,突然就讨厌android了,是吧。
我:没……,也不能说讨厌吧。就是不知道为什么就喜欢C/C++了。
        接着都是对着简历问的。
leader念着我的简历:熟悉常用Linux编程API。笑着说:那你说说你会用哪些API
我瞬间头脑风暴:基本的open啊、create、read、write。进程管理的fork、vfork。还有……
一下子不好列举了,顺口说了个:退出exit,还有带下划线的退出(_exit)
leader打断我:说说带下划线和不带下划线的区别
我:不带下划线的会刷新数据流缓存,比如你有打开的文件,如果用exit,就能保证在退出的时候把缓存区内容写入文件。而带下划线的(_exit)则不会。实际上exit更推荐使用,但带下划线的(_exit)效率更高
leader:说说fork。它的子进程和父进程的内存空间如何
我:内存空间不共享,子进程直接copy的父进程的内存空间。比如你一个父进程中的变量被修改了,在子进程中这个变量不会变
leader:fork返回值大于0表示什么
我:当前进程是父进程啊。这个值就是子进程的id
leader:返回值等于0呢
我:子进程
leader此时诡异的笑着说:等于-1呢
我:那就出错了啊。
leader:说说进程和线程的区别
我blablabla大概讲了一下,凭着操作系统课仅存的一点记忆,就谈了一下进程包含多个线程啊,进程是资源分配的最小单位啊,线程的调度的最小单位啊之类的。后来leader问我关于两者存储区相关的内容,哪些东西是共享的,哪些是私有的(线程有自己的私有栈和私有全局变量)等等。我这里答得并不好。
leader:假如有多个进程同时对一个文件进行写操作,会出现什么问题
我:……写入的数据就不理想啊,达不到你想要的效果……这个不是进程安全的
leader:你怎么知道我想要什么效果。。
我:比如你想依次向里面写数据。但你实际多个线程写入的时候得到的数据是错落的(自己实在无法很好的描述……)
leader:那你怎么解决这个问题
我:锁。。额不对。我知道线程有互斥锁(mutex)。。进程貌似没有啊。。
leader:这个不知道了吧。。
我:恩。。。
        我心想面试官真是打破砂锅问到底一个问题无限延伸,从开始的介绍API,到最后如何解决安全的进程读写。。其实是一条线牵扯出来的问题,我到这里终于戛然而止,他诡异一笑,似乎也是因为把我问住而感到满足。。。
leader:接着说说你用过的其他API吧
我:还有信号相关的,比如signal注册信号啊,raise、kill发射信号啊等等。其他的还比如说网络编程的几个函数
leader:说说网络编程服务端的几个函数调用的顺序
我:bind……
leader笑了一声:上来就bind???
我:哦哦哦,socket,先调用socket函数获得套接字。然后是bind、listen、accept。这时候客户端connect
leader:奥,接着你说说Linux里面常用的数据传递的方式
我疑惑了一下:数据传递?是说IPC是吧
leader:对,并说说它们各自的特点
我心想:这是腾讯笔试的时候考过的,当时就是凭着自己的理解填的,万万没想到面试还会问这个,所以没有准备和整理过标准的解释。。这里还是要凭自己的感觉说一下
我:先说管道吧,命名管道或者叫知名管道(fifo),它把数据存在文件里,实现了一个数据的持久化。非命名的普通管道(pipe)可以用于数据量比较小的数据传输吧,可以即取即用,多用于组合多个命令,灵活性很大。信号的话呢,可以实现一个异步的功能吧……
leader:说说什么是异步,如何实现的异步
我:异步就比如说,你一个费时的IO操作,我不去等待他完成,而是去做其他事去了,接着等IO操作完成了发一个比如SIGIO的信号通知我,我就在接手,大概就这样吧
leader:接着说其他IPC
我:剩下的就是系统五(system v)的几个IPC了:消息队列、信号量、共享内存。信号量就是一个操作系统里的概念,PV操作。当进程资源有限的时候可以通过信号量来完成某种操作,还可以同步。
leader:具体说说这个PV操作。比如你有一个资源数量有限,有进程申请的时候就减一,释放的时候就加一。数量的为0
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果冻虾仁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值