2018年春招总结(暑假实习生C++岗)

    • 前言
    • 春招进行时
      • 春招的时间
      • 招聘信息来源
      • 投递简历的时机
      • 简历的准备
      • 面试的技巧
      • 心态
    • 如何准备
      • 复习的时间
      • 复习的内容
    • 自己的面经
      • 深信服
        • 深信服一面
        • 深信服二面
        • 深信服终面
        • 总结
      • CVTE
        • CVTE现场一面
        • CVTE现场二面
        • CVTE现场终面
        • 总结
      • 百度
        • 百度一面
        • 百度二面
        • 百度终面
        • 总结
      • 腾讯
        • 腾讯简历评估面
        • 腾讯小组leader面
        • 腾讯部门主管面
        • 腾讯HR面
        • 总结
    • 尾声

前言

以下是我经历春招这半个多月以来的一些经验,把它总结下来供各位需要的朋友参考交流。

春招进行时

春招的时间

一般各公司是在2月末陆陆续续开始春招的,春招针对的对象一般是补招18届或者招19届的实习生。有些公司会在年前就开始招人,如果提前准备好,甚至可以在年前就拿到offer,别人春招的时候你就可以干自己的事了。

在春招的过程中,3月-4月这个阶段一般是各公司的内推时间,需要注意内推一般分为两种,一种是大内推,意思就是所有的简历都会被收集起来,供各部门去选择,哪个部门看的上哪个部门的人就来面你,如果没有部门看上你的简历,那就直接笔试了,这种内推的成功率不是很高,并且不建议选择部门时选择”都喜欢”这一栏,因为这样很容易成为备胎;还有一种内推是部门直招,这种内推的岗位和人数都有限,但是成功率要高一些,相当于可以你的简历肯定会被那个部门的人看到并面试,不过这种内推的信息一般较少,看到了一定要把握住机会,否则别人就抢先通过面试获得名额了。

招聘信息来源

关于招聘信息的来源,我主要从公众号、牛客网以及一些学校的论坛里面获取,比如电子科大的清水河畔,也可以通过加一些什么什么实习群之类的获取。看到了适合自己岗位的招聘信息,就算你目前没有准备好,也尽量记录下来并且注明投递的时间,以免等自己准备好了,但是投递简历的时间已经截至了。

投递简历的时机

一般来说,简历投的越早越好,因为大家可能都觉得还没有准备好,如果你预先准备的差不多了,此时你想投递公司的对应岗位的名额还很多,这是一个优势;否则等大家都准备好了,但是名额已经所剩无几,HR的把关可能要严很多。建议复习的时间尽量早一点,然后尽早的结束。一般投了简历之后,还是有一周左右的时间才会面试,不过有些公司的效率要高一些,有些要低一些,所以也说不定。如果没有准备好,那也不要太勉强。

针对自己想去的公司,最好还是先投递一些其他的公司增加一点面试经验,以免太过紧张,从而导致发挥失常。

简历的准备

作为做技术的同学来说,简历方面一定不要太过于复杂,简洁为最佳,并且1页足够了。如果项目经验比较突出,那就把项目经验放在比较靠前的位置,如果竞赛获奖的经历比较突出,就把获奖的经历放在前面,总之就是要突显自己的优势所在。
还有一点就是,有写博客的习惯或者使用Github的习惯是会有加分的。我的简历就附上了这些地址。

面试的技巧

笔试方面其实没什么技巧可言,只有多做点题之类的。但是面试还是有一定的技巧存在的。首先是电话面试,在电话面试的时候务必保证周围环境的安静,如果太嘈杂,告诉面试官现在不方便,再约一个时间即可,还有一个很重要的是最好自己身边有纸笔,便于梳理自己的思路。就算身边有电脑,也不要用电脑上网查,如果被听到了,肯定是会被直接挂的,这个是最基本的诚信问题。由于不是现场面,不能通过纸笔来表达自己的意思,所以此时的表达能力就显得特别重要,对于一些比较经典的问题,可以自己反复的多看几遍,尽量不要支支吾吾的回答。

如果是现场面试,首先自己的形象一定要整理好,不用穿的太隆重,但也不能穿的过于时尚,比如破洞牛仔裤之类的。面试的过程中,谈到一些问题时可以主动用纸笔展示给面试官看,面试官可能会要求你手写代码或者使用他的电脑来写代码,如果一开始没有思路,那就最好在纸上多推导一下,如果还是没有,就告诉面试官自己目前的思路,他可能会给你一定的提示来引导你得出答案,切忌不要说不知道。

面试时的制胜点就在于你要自己主动输出,而不是靠面试官的问题来被动回答。比如面试官问你Linux内存管理方面的问题,首先想到的就是伙伴系统以及Slab分配器,如果你对两者的其一不熟,你可以直接告诉面试官自己对另一个比较熟悉,然后再说出其实现的机制,不要别人一问你就说不知道。

心态

能不能通过面试,心态其实是很重要的一个因素。如果因为一场面试的失利而导致自己的心态不稳定,会极大程度的影响自己以后的面试,所以一定要注意调整自己的心态问题。如果春招对于自己来说太早了,那就准备秋招,总之要清楚自己的定位,抱着试一试的心态,通过面试发现自己的不足之处从而完善自己的知识面,这样迟早会拿到自己心仪的offer。

如何准备

复习的时间

准备春招的时间不益过早,太早了容易导致越复习越乏力,也不益过迟。我差不多是提前了2-3个月来复习,3个月左右比较合适。

复习的内容

公司最看重实习生的基础到底扎不扎实。一般需要复习的有如下几点:

  • 语言
    语言方面,我是C++岗,所以这里只能给出对C++的建议。《C++primer》、《深度探索C++对象模型》、《EffectiveC++》这几本书基本上是做C++的人必看的书籍。并不是说等复习的时候才开始看,而是应该在准备春招之前就已经阅读过这些书籍。《STL源码剖析》这本书也应当去仔细阅读,如果时间不太够的情况下,可以只看看容器以及空间配置器这些的实现。这些大概是需要准备的书等,关于知识点和常问问题,这里列举了一些我遇见的以及可能会考到的。

    1. C++中深拷贝和浅拷贝的区别
    2. C++中析构函数能否为虚函数,为什么
    3. C++中多态是怎么实现的
    4. 指针和引用的区别
    5. constexternstaticvolatile等关键字的作用
    6. 构造函数调用的顺序
    7. newmalloc的区别
    8. typedef和宏的区别
    9. 宏函数和内联函数的区别
    10. 内存对齐,结构体大小怎么计算
    11. 智能指针是怎么实现的
    12. 如何实现一个不能被继承的类
    13. STL中vector等容器怎么实现的

    以上都是很常见的面试问题,STL部分要根据你熟悉的程度,也可能问到其他容器的一些实现或者配置器的实现。

  • 操作系统
    其实对于操作系统而言,理论方面的知识是完全不够的。一般面试官问的时候,如果你想深入回答,都会涉及到一些操作系统它内部的实现。理论方面比较重要的就是进程和线程的区别等,以及一些调度算法,内存管理方面的,但是这些只回答理论只是一个很浅的层次,对于面试官来说,这种标答其实也就一般般。所以尽量向Linux内核层面进行研究,比如《Linux内核设计与实现》、《深入理解Linux内核》等书可以去阅读了解一下。以下是常见的问题。

    1. 进程和线程的区别
    2. 常见的调度算法,具体的实现
    3. 进程间通信的方式
    4. 线程同步的方式
    5. 信号机制,常见的有哪些信号
    6. 死锁产生的原因,产生死锁的条件,死锁的解决方法有哪些

    其实这一块还是要根据你自己掌握的程度适当的发挥,每个人情况都不一样,这些都是很基本的问题,如果答不上会留下很不好的印象。

  • 计算机网络
    三次握手、四次挥手这些问题真的很常见,你可以引申出为什么是三次握手而不是两次,为什么是四次挥手而不是三次或者更多。TCP协议一定要熟,它的拥塞控制,滑动窗口机制、延迟ACK、Nagle算法等。以及UDP和TCP的区别等。HTTP协议也需要有一定的了解,比如一些常见的状态码还有HTTP请求/响应包含了哪些内容等。这里就推荐《TCP/IP详解卷一》或者《计算机网络》(谢希任)这两本,HTTP方面,如果你的项目没有涉及到HTTP协议,那就简单的了解下就行了。

    1. TCP三次握手,四次挥手的过程,对应哪些系统调用
    2. TCP和UDP的区别
    3. TCP的滑动窗口协议
    4. TCP的拥塞控制算法,慢开始、拥塞避免、快速重传、快恢复
    5. UDP如何才能实现可靠传输
    6. 访问一个网站,从敲入url回车之后,大概经过了哪些步骤
    7. HTTP常见状态码
  • 数据结构和算法
    这个绝对是重中之重了,3个月的准备时间中,大部分的时间最好都花在刷题上面,刷各种常考的数据结构和算法题。这里主要推荐《剑指offer》还有LeetCode。除了做题之外,还可能会问到以下问题。

    1. 快排、堆排、归并排序的实现思想
    2. 解决哈希冲突的方法
    3. 红黑树有哪些特点
    4. B树、B+树的特点
  • 数据库
    数据库方面,如果项目上没有涉及到,就复习一下上课教的内容就可以了,比如索引是什么,有什么用之类的。但是如果项目涉及到了数据库,最好深入去了解一下,这里也牵扯到B树这方面的内容。

    1. 如何加快查询语句的效率
    2. 索引的作用,有哪些索引,索引无论哪种情况都可以加快效率吗?
    3. 事务的四个特性
    4. 存储过程是什么
  • 其他
    一些前沿的东西也需要去了解一下,比如区块链的原理或者是分布式存储的原理,一致性哈希,负载均衡等方面。还有设计模式也需要去了解,至少单例模式的线程安全版本要会写,其实基本也就那些,了解一下工厂模式之类的,面试来说完全够了。
  • 项目
    项目方面也是一个重点,如果面试官对你的项目比较感兴趣,那可能前面的基础就会问的少一点。自己的项目自己一定要理清楚思路,以及中途遇见的难题,怎么解决的,还有为什么要那样做。有些同学可能没有接触到那种需要多人合作的项目,但是也可以自己做一些作品出来。

以上便是大体需要准备的一些内容,其实我自己的感觉是,可以提前展示在简历上的一定要展示出来,简历太渣给面试官的第一印象就不太好,如果个别问题再没回答上,挂的几率就比较大了。

自己的面经

我面的公司不多,面了的都过了。大家投递公司的时候最好用一个文档记录下来投了哪些公司,也不要投的太多,以免自己忙不过来。

深信服

深信服一面

  1. recv send出现错误的情况
    随便列举了几种,比如参数错误、套结字非法等
  2. 建立socket连接调用了哪些函数,对应三次握手的哪几个状态,半连接怎么处理
    还讲了一下listen函数第二个参数意义
  3. 阻塞和非阻塞的区别
  4. 深拷贝和浅拷贝的区别
  5. 大量无重复的ip地址排序
    用bitmap就可以了
  6. 看过Nginx源码?讲一下负载均衡的实现
  7. 信号机制了解吗?SIGKILL和SIGSTOP为什么要设计成不能被捕捉和忽略
    从常用的信号以及信号的几个处理动作以及内核是如何处理信号检测信号等方面来回答的
  8. Linux用的怎么样,说几个常用的命令
    常用的比如ifconfigtcpdumplsofmountnetstat
  9. ip地址去重
    随便说一个可以实现的思路就可以了,比如通过hash之类的
  10. 序列化二叉树
    《剑指offer》原题

深信服二面

  1. 位域
    位域的好处节省空间等
  2. 内存对齐
    从为什么需要内存对齐以及怎么内存对齐来回答
  3. HTTP协议使用的传输层协议
  4. 网络编程中常用的函数
  5. 使用UDP通信能不能调用listen函数
    不能调用listen,但是可以调用connect获取对端对信息
  6. 项目中内存池的实现
  7. Linux查看进程信息的命令、查看网络连接、端口占用的命令
    psnetstat
  8. gdb如何查看堆栈的信息、如何打断点
    back straceinfo frame、普通断点、条件断点

深信服终面

由于HR要求马上入职,所以拒了深信服。

总结

总的来说,深信服问的问题比较基础,也比较容易回答。但是就算是简单的问题,也一定要回答的深入。简历很容易给面试官一个第一印象,如果第一印象比较好,再加上你回答的都很深入,那么面试官可能就觉得你技术方面没什么问题,问的问题会少一点而且气氛也比较放松

CVTE

CVTE现场一面

通过了笔试之后,就去参加了CVTE的一面。

  1. Nginx的惊群问题
    Nginx是如何处理的,以及内核对该问题的解决
  2. Nginx的进程模型
  3. Libevent的源码你读了哪些
  4. 内核线程的调度算法
    CFS算法,具体到使用红黑树组织进程,并通过nice值映射权重,计算vruntime
  5. typedef和宏的区别
    typedef可以类型检查,编译时处理。宏只是简单的替换,运行时替换,并且可以使用宏函数等
  6. HTTP请求头有哪些内容,请求主体有哪些内容
  7. 项目中内存池怎么实现的
  8. X86简易操作系统内核做到什么地步,为什么想去做这个
  9. 闲聊

CVTE现场二面

第二天清早就去参加CVTE的二面了,面试官挺和蔼的。

  1. 多路I/O复用机制比起传统的方法有什么好处
  2. epoll为什么比poll还有select高效
    epoll的源码实现角度来说
  3. 读过哪些源码
  4. 做过哪些项目,有没有跟别人合作过
  5. 做X86简易操作系统内核遇到的最大的难题是什么
  6. 缺页是如何处理的
    说了之后,再说到写时复制是如何实现的
  7. 伙伴系统算法是怎么实现的
  8. 看过STL源码?说一下各组件
    主要说了空间配置器的实现、迭代器的实现、traits技法、一些常用容器
  9. 写代码,合并有序链表,并逆置
    《剑指offer》原题
  10. 是什么驱动你去学习这些比较底层的内容
  11. 闲聊

CVTE现场终面

二面面完之后,面试官让我等等,马上安排我终面,负责我终面的也是一个小姐姐。

  1. 你对这次面试有什么感受,对自己的表现打几分
  2. 你觉得你性格怎么样,有什么缺陷
  3. 你父母的性格怎么样,在哪工作,有兄弟姐妹吗
  4. 有女朋友吗
  5. 对工作的地点有没有要求,能实习多久
  6. 如果有了其他公司的offer,会怎么选择
  7. 谈一谈你对cvte的了解
  8. 如果你入职了,你觉得你可能面临的最大的问题是什么
  9. 对你影响最深的人或者事
  10. 什么时候你感受到的压力最大,怎么释放的
  11. 如果你不能来实习,你觉得最可能导致的原因是什么
  12. 你对实习的薪资有没有什么要求

总结

CVTE的面试官都挺好的,而且好像都是年龄稍微大一点的人,反正很和善。对于他们问的技术问题,感觉也不是很难,还是要回答的深入才行,一面和二面的面试官都夸了我,问了几个问题之后,就随便聊了一下,还点开我的博客问了一下。

百度

百度一面

百度的一面面试官和我约时间的时候当时正在面CVTE,随后我打过去约了时间,并且他也发了在线答题的链接给我。

  1. 说一下你的项目,里面的内存管理怎么实现的
  2. 说一下伙伴系统算法
  3. C++里面拷贝构造函数的作用是什么,为什么需要这个东西。我们为什么要自己写拷贝构造函数,而不直接用默认的
    涉及到深拷贝、浅拷贝等
  4. 虚函数讲一下,vptr指针存在哪的
  5. C++中对象的构造顺序
  6. 析构函数可以是虚函数吗
  7. 讲一下STL中vector怎么实现的
  8. 在线答题,给定一个数组和一堆区间,求每个区间的和,给出时间复杂度
  9. 快排的时间复杂度怎么算的
  10. 堆排序了解吗?说一下维护堆的操作
  11. topK问题的求解
  12. 网络了解吗?讲一下三次握手的过程,半连接怎么处理
  13. 1000w行数据,一次处理1w行,一行数据以key value形式存储,怎么做merge
    mapreduce
  14. 在线答题,链表的逆置
  15. 有没有什么想问的

百度二面

一面过后过了几分钟,二面就来了。

  1. 进程和线程的区别
    从Linux内核中线程的实现来回答
  2. 线程有哪些同步机制
  3. 信号机制怎么实现的
  4. 消费者和生产者可以用什么机制实现,怎么实现的,讲细一点
  5. 大数据处理相关的你了解过吗
    就说了了解过mapreduce等
  6. 二分法你说一下原理,如何找到一个有重复元素的已排序的数组中第一个出现的target
  7. 你有没有什么想问的

百度终面

二面过了十分钟,三面就来了。

  1. 你觉得你性格怎么样,有什么缺陷
  2. 你承受的最大压力是什么时候,怎么解决的
  3. 如果你去了一个新的团队,你会不会觉得不融洽
  4. 你们社团主要干啥的
  5. 大学遇到的跟别人交流最大的问题是什么,怎么解决的
  6. 什么时候可以过来实习,可以实习多久
  7. 如果BAT都要你,你更看重公司的哪些方面

总结

百度的效率挺高的,以前投了一些公司的简历,都是要等一周左右才有反应,我投了百度的第2天还是第3天就来电话了,然后直接当天面完,第二天就发offer。百度问的问题确定难度也不大,不过也要回答的深入才行。最后给的是搜索部门的offer。

腾讯

腾讯简历评估面

开始我以为是一面,结果不是。

  1. 你读过的印象最深的一本计算机书籍是什么?讲一下为什么
  2. 有实习经历吗?
  3. 遇到过大量数据的场景没有,处理过没有
  4. select、poll和epoll的优缺点讲一下
  5. 社团活动
  6. 算法学的怎么样

腾讯小组leader面

  1. 项目中HTTP服务器怎么设计的?如何实现高效的?主要关注点是什么?
  2. 你对Nginx印象最深的地方是什么?你觉得你从中学到了什么?
  3. 除了看Nginx的源码,自己有没有尝试写过第三方的模块?讲一下里面惊群以及负载均衡问题是如何解决的?
  4. 讲一下敲入一个url,直到获取到资源,这中间的过程是什么,能讲多细讲多细。静态资源和动态资源分别怎么处理的,有缓存又怎么办
  5. 当传输的数据量很大的时候,该如何解决?
  6. 如果要你实现断点续传,你如何设计?确定吗?
  7. 你觉得你的项目做的好不好,能不能运用到实际的场景中去?
  8. 现在我有大量日志文件需要传输,很重要,数据量也很大,该用什么协议传输?还有没有其他办法?

腾讯部门主管面

  1. 聊一下你大学的经历
  2. 你们社团主要做什么,你负责什么工作,讲细一点
  3. 你对自己未来有什么规划?
  4. 有没有想过考研?为什么?在学校成绩怎么样?
  5. 读大学以前有没有学过计算机?
  6. 有没有女朋友?
  7. 平时都有什么爱好?
  8. 做过实际的项目没有?为什么?
  9. 你觉得你对于技术的兴趣点在哪?
  10. 你有没有什么想问的?

腾讯HR面

  1. 做个1分钟的简单自我介绍
  2. 有没有考研的打算
  3. 对城市的选择有没有特别的要求
  4. 有没有什么病史

总结

大概就只记得这些了。。。。说实话,腾讯的面试官是我遇到的所有面试官里面最nice的,对人的态度以及各方面都很棒。

尾声

其实对于这次春招而言,大部分的时间都处于等待中,除此之外也没有什么特别的感受,总之还是需要自己平时多积累,到了春招或者秋招的时候才会有条不紊,收割自己想要的offer。

你可能感兴趣的:(感想与规划)