首页 > 编程知识 正文

腾讯公司的产品开发工程师是啥,腾讯后台开发实习生面试

时间:2023-05-05 23:05:37 阅读:258641 作者:2753

前言

前一段时间参加了腾讯暑期实习提前批的面试,也算是尝试了面试的感觉。遇到了一些问题,现在整理出来,也算是做个总结,以后不要再犯同样的错误。参加这次提前批面试,主要是通过电话和视频面试进行的。我将从岗位需求,简历书写及面试内容等方面先介绍。然后罗列出面试过程中遇到的问题,供大家参考。

 

岗位需求

腾讯有很多不同的岗位,就软件开发而言,又会细分为后台开发、PC客户端开发、移动客户端开发、测试开发、运营开发、云计算开发等。不同岗位都有相应的要求,这点可以在腾讯实习上查询。在阅读完不同岗位的要求后,我感觉目前所学知识比较适合后台开发,所以我就投了后台开发。这里我列出后台开发岗位的要求供大家参考。在腾讯实习的官网,还可以看不同岗位的录取比。

 

简历

在确定了投什么岗位后,令人比较头疼的是简历的书写问题。要总结自身所学的知识,然后用最精炼的语句表达出来,这点在刚开始写的时候真的不容易。这时,我借来了学姐的简历作为参考,这才完成了自己的简历(最好保存成PDF)。简历这块我也踩了坑,等一下再细说原因。

 

事业群选择

投递简历还需要在腾讯实习上填一些相关信息,刚开始我以为自己提前准备的简历没用了,其实不是这样的。在填到后面的内容后,有一个上传附件可以给大家上传自己做的简历。这里还有一个问题就是在填信息的时候选择事业群的问题,如果你在看了相关事业群的介绍后,很明确的知道自己将来的方向,那么就可以选择相应的事业群,此时简历会优先被所选的事业群所看到。如果没有明确的意向,可以选择无意向(我选择的就是无意向)。选择无意向后,所有的事业群都能看到你所投递的简历。如果有部门对你比较感兴趣,他们就会锁定你的简历(此时别的事业群看不到你的简历),然后给你安排相应的面试,如果过了,你可能就能收到offer。如果没过,你的简历又会回到简历池中,供其他部门选择。

简历命名和技术栈

简历命名时要注意一定的格式,让筛选简历的人一眼就能看到你想干嘛。例如:[姓名_岗位_学历_电话]。然后就是简历本身的结构,这里比较困难的是整理个人技能和项目经历。对于个人技能而言,可以根据上述岗位要求进行整理。因为我们肯定是选择和自身所学知识符合的岗位,对于有明确目标的人,他肯定为相应岗位早早做好了准备,所以根据岗位要求写个人技能完全没有问题,但要做到实事求是。如果有其他的相关的技能也可以写上,但要做到面试官提问时能对答如流。

 

项目经验

对于项目经历而言,数量并不在于多。一定要梳理好项目中自己的职责和所完成的工作以及使用的技术。在第一次面试的时候,我写了两个项目经历。第一个是Web端环境管理平台的项目,调用了云平台的视频数据。第二个是课程设计的项目,在 Linux 平台下完成的视频采集并传输。我在个人技能里写的都是与C++相关的知识,但是第一次面试给我整了一个应用开发,问了我一大堆Java问题。当时面试挺尴尬的,所以面试完我就把简历和网上填写的资料改了一遍。这里需要说明的一点是,岗位的分配是由面试官决定的。

 

面试内容

第一次面试

第一次面试是视频面,前一天就收到了微信的提醒。当时准备的比较多,感觉快把自己写的技能都复习了一遍。也把项目和内容捋了一遍,设想面试官可能会问的问题。结果发现面试完全不是自己设想的那样进行的。

视频面使用腾讯会议,提前10分钟进入后等待面试官。面试官到了后,简单的进行了自我介绍,大概40秒左右。自我介绍还是提前做好准备比较好,大概分成介绍学校及专业,关键技术栈和简单的描述项目经历等。然后面试官开始问问题。然后面试官逮着我的第一个项目一直问,我也做出了相应的回答。但是第一个项目大概问了有25分钟,我感觉有点不对劲,然后我就打断了他。跟他询问了部门的情况,他简单的说明了一下。然后我表明,我主使用C++完成编程工作。以及介绍了对基础知识的了解情况,同时说明了第一个项目中,自己的职责和完成任务。希望面试官能根据我的技能提问,但当时我们都有点尴尬,因为感觉两个人没有在同一个频道上交流。然后面试官就开始问第二个项目的情况,我做出了回答后,他说我的简历写的不是很清楚,项目里的技术栈没有罗列出来。然后我们就开始聊岗位和部门的事了。这次面试,我感觉就是面错方向了,但还是有一点收获的。面试完,我做的第一件事就是修改资料和简历。

 

第二次面试

第二次面试是电话面,面试官快中午了给我打电话问什么时候有时间,我说晚上就能参加面试。这次的面试提的问题都是和我技能相关或者是他们部门所需要的。以下是我整理的面试问题:

1. 数组和链表的区别,各自完成相应操作的时间复杂度(插入、查找和删除)

答:主要从不同操作的时间、空间复杂度进行回答。

 

2. 讲解快排过程,基准选择带来的问题

答:描述快排的排序过程,以及基准的选择,这个我之前整理过一篇博文,有兴趣的可以看看:快速排序的4种优化。

 

3. 给一亿个IPV6地址,最快的时间找出10个地址

答:这个我最后给出的答案是哈希表加红黑树。其实我想多了,这就是一个Topk问题。

 

4. TCP/IP协议,OSI七层协议每一层都干些什么

答:这里我回答了 4 层协议每层完成的工作。OSI七层协议里的会话层和表示层我不太熟,所以回答的时候就说这部分被整合到了应用层。

 

5. TCP和UDP的区别是什么

答:TCP的特点是有连接、一对一、提供可靠交付、全双工通信、面向字节流。

 

6. TCP三次握手和四次挥手的过程,包括客户端和服务器会进入什么状态

答:这里就不多说了,可以看我另一篇博文:TCP 可靠传输机制详解。

 

7. 四次挥手为什么要等2MSL

答:(1)为了保证A发送的最后一个确认报文段能够到达B。如果A不等待2MSL,若A返回的最后确认报文段丢失,则B不能进入正常关闭状态,而A此时已经关闭,也不可能再重传。

(2)防止出现”已失效的连接请求报文段”。A在发送完最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。

 

8. 从浏览器输入一个网址,底层都干了些什么

答:使用wireshark抓包并进行网络协议分析。

 

9. Linux多进程和多线程概念

答:进程是进程实体的一次运行,是系统进行资源分配和调度的独立单位。线程为了更好的使多道程序并发执行,以提高资源利用率和系统吞吐量,增加程序的并发性。这里从资源和调度角度回答就可以了,没有问的很深,回答进程时最好提一下PCB,因为PCB是保存进程运行期间相关的数据,是进程存在的唯一标志。

 

10. 如何完成线程同步,知道什么锁

答:互斥锁,信号量,读写锁。回答完后面试官又问还有没有别的,我说别的我只知道概念,比如自旋锁。他听到自旋锁后就没有继续问了。

 

11. 进程间通信

答:管道、信号量、消息队列、共享内存和socket。

 

12. 内存对其

答:这个我答的比较简单,内存对其能够节省空间。其实还有平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。

性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。

 

13. 大页内存问题

答:防止页面被频繁的换入和换出,涉及虚拟内存的知识。

 

14. C++重载、覆盖和多态问题

答:回答概念即可。

 

15. 虚函数底层实现

答:虚函数原理。

 

16. select和epoll的区别

答:最近整理的内容I/O多路复用:select、poll和epoll详解。

 

问完问题后,面试官介绍了自己部门的工作以及要求。这次面的是腾讯云平台底层开发,所以在面试过程中他问了很多关于网络和操作系统的问题。然后,来到了所有面试官都会提的问题,你有什么问题要问吗?面试官问这个问题,基本就说明面试快要结束了。所以我的提问是:我想了解一下岗位的具体要求。他说底层开发需要了解网络中的一些协议,不只是了解原理,还要了解和学习底层实现。

 

总结

腾讯提前批面试会根据我们的简历和部门本身的需求在面试过程中提问相应的问题。所以在以后的面试中,需要认真的书写自己的简历,还要了解不同部门的技术栈。

收获一:

每个公司(或部门)考察的点都不一样,第二次面试的网络问题真的有很多是我答不上来的。字节跳动在一面和二面会问很多数据结构和算法的问题作为一个筛查点,然后在之后的面试过程中问更为深入的问题。每个公司考察的知识和方向可能不一样,需要提前做好准备。

收获二:

需要扩展课本知识,或者是对某些方面学的更深。和面试官交流后会发现,所问的问题都是他们在实际工作中遇到的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。