面试官交流中的问题与后感

面试官交流中的问题与后感

这部分主要介绍面试C++后台开发/C++开发岗过程中,所被面试的问题;针对被拒或提供offer后,写一些自己对公司录用人所考查方面,当且就算它是面试后感吧。此外,还是想在这部分写一些有关找工作过程中,大家特别关注的问题,以及对我对这些问题的一些看法。如实习经历重要不、笔试如何通过、自身参与项目情况、技术面与HR面各自特点。因为自己也是刚过来人,这些问题在我面试时或准备找工作时困扰已久;只有当你完成签约后,回头看看,这些问题当中有些根本不值得你去担心。或许大家所处的情况不一样,也或许我只是站着说话不腰痛吧,哈哈哈!

 

实习经历重要不

         实习经历重要不?这个问题我们适当可以区别对待。如果你仅仅是想去混个项目经验,或许就不太重要;但如果你想通过实习机会留用的话,还真挺重要的,毕竟公司选拔人,很多时候是优先从实习生中挑选的。比如腾讯、华为这种大厂,只要你在实习期内競競业业的话,还是非常好获得留用的机会。当然,前提是你已经通过了公司实习生选拔,这门槛还是有点高呀,在这里你的选择就也很重要。如果你是想通过实习获取项目经验,我个人觉得可以适当的给自己降些门槛。怎么去理解呢!据了解,公司录用实习生,并不会让你从事核心的项目开发,一来涉及商业机密,万一你获取核心价值后直接跑路了,人家怎么办,对吧;二来实习生个人能力也有限,需要一个在公司学习的过程。第二点,也正好符合公司的需求,你来公司实习,待毕业后直接过来上手,公司以最小成本代价换取你成长的初期阶段,这不更好嘛!在公司实习,更多是让你完成一个task,在这个过程中,你的付出、主动、态度、能力,人家是看在眼里,记在心里的。想必完成一个task,自己多多少少会有收获吧。既然这样,何必非要在实习期选择大厂呢。选择的门槛降低一些,或许参加项目的机会更多一些,同样达到收获经历的目的。把目光放长远一些,秋招才是展示自己的时候。

 

如何通过笔试

         针对IT软开岗位,基本上是逃不掉笔试的。那么笔试重要嘛,该如何准备笔试呢?笔试说重要,它还真的非常重要。毕竟你没过笔试,别人压根不给你面试的机会。连面试的机会都没有,前期付出的再多也是白搭。说它不太重要,也是有原因的。只要你有其他方面足够出彩,面试官更多时候不太在意你的笔试成绩,如拿奖多,成绩优异等。这里还是有必要和大家说一下面试邀约情况。现行的IT公司对应聘者发起面试邀约分成两种情况,绝大多数都是由HR完成邀约,而HR凭借的尺度就是笔试成绩,基本上是先看笔试成绩再看你的学历专业相关信息。这种情况下,笔试就相当重要了。另外一种模式,只要你笔试成绩不要差到离谱,由面试官对应聘者发起面试邀约。这种情况下,自身软实力就显得格外的重要。第二类的公司,主要代表就是腾讯、阿里啦,他们不会因笔试成绩而忽略你其他方面的闪光点。

         个人针对笔试给出的建议是,想尽一切办法通过笔试。哈哈哈,想法有点飘,但就是好用哇。首先,前期的准备工作,已为你筹备了大量的基础知识,基本上用不着太慌啦;然后,抱团啦,一定要发扬团队作战的思想,而不是孤军奋战;感觉再说下去,就有点邪恶了,请大家自行脑补吧。总而言之,想尽一切办法通过笔试。

 

参与的相关项目

         项目经历对我来说很伤。第一,自己所选择的岗位偏软件专业,研究生期间根本没在这个方面做过什么像样的项目,这硬伤有时候会被无限放大;第二,虽然有学习过书上的小项目模块,但所涉及的深度远远不够。所做的东西既然有次被面试官戏称为本科生的大作业,伤透心了。但既然选择转后台开发这个岗位,事先就应该想到会有这方面的困难,正所谓欲戴其冠,必承其重吧。反正自己已经被鄙视够多了,也不在乎再多这一回,内心还是很强大的。OK,回归正题。就我个人面试情况来看,有关自己研究生所做的通信项目研究,ICT公司的面试官还是非常想了解一下的,互联网公司面试官就呵呵了。既然后台项目这块是硬伤,那就在其他基础知识方面打扎实一些。一定要让面试官能看见你的闪光点,让他觉得录用你是有价值的,能为团队或公司带来好处。

在后面的小模块中,我将会给出各大公司面试的情况,所以在此处就不一一细讲了,参考公司面试时所提问题及后感模块。

 

公司面试时所提问题及后感

网易互娱、网易游戏、巨人网络、搜狐畅游、腾讯、美团、携程、银联、平安科技、华为、中兴、TP-LINK、思科、OPPO、海康威视、阿里、

上述公司划分为四类,分别是游戏类、电商类、通信类、C/C++开发类。针对这四类公司给出自己面试时所遇到的一些提问,个人觉得这些问题还是值得想从事这方面工作的学弟学妹们好好去准备解答的。遂将其以文字形式记录下来,仅供参考。然后,针对每类公司的面试情况,统一给出了自己的看法及后感。当然,这些看法及后感多多少少存在差异,所以仅能代表自己的观点。不喜轻喷,谢谢!

网易游戏

第一轮面试:

  1. I/O模型

I/O阻塞、I/O非阻塞、I/O复用、信号驱动I/O、异步I/O(主要解释一下,其实就没有写过这个模型,汗!)

  1. 服务器范式

迭代、并发(写这个)、进程池、线程池

  1. MySQL引擎,了解其什么特性?

默认innodb,支持行级锁、支持事务、支持索引——这一块不是很熟!

  1. select语句查询时,是否加锁?

这题绝对不能直接回答是加锁,innodb默认情况下是加锁(还要根据隔离级别来考虑),其它引擎不太清楚。

  1. 事务的特性

原子性、一致性、隔离性、永久性

介绍一下一致性:如a+b=10,a=5,b=5。如果说将a改为3,而不变b,则违背了一致性。

  1. 给定10bytes的数据,tcp/ip协议栈从上至下包装,最终的数据大小?

tcp:20B首部、ip(假设采用IPv4):20B首部、数据链路层:含有目地、源MAC(各6B)、类型字段、长度、协议字段等,最后一定要注意的是每一层结尾都有校验码,具体多少没有回答出来。

  1. tcp报文头部结构
  2. 什么时候发送R报文
  3. 内存模型

动静自常代,各解释一下

  1. 给定32位地址空间,画出其内存模型结构(感觉没听懂意思,更多因为自己之前根本没有接触过,根本不懂!)
  2. 解释一下C++的虚继承
  3. linux指令及shell的用法
  1. 在src目录下查找出除data目录外的所有*.py文件,并依次cat出来

find /src -path “/src/data” -prune -o -print

  1. 查找cpu下,输出按占据cpu利用率从小到大排序的进程

不会,只说了一下思路,利用top +awk(对每一行进行分段处理命令)

 

第二轮面试:

  1. 实习项目(测试嘛,写了多少测试用例,怎么测,实习太水,这块瞎编哈)
  2. I/O多路复用模型(详细介绍)
  3. IPC有哪些,各自的特点是什么(详细介绍,最后问我共享内存的优点,只回答了加速消息传递效率,还吗?实在不知道)
  4. 测试可调用的库(只了解过一下boost)
  5. 当用户申请账号时,如何给定一个ID对应一个用户?

利用时间戳,如果并发,加锁+加相应的序列号、如果是进程间并发,则对文件加锁

  1. 有位面试官要我写遍历算法(递归、栈实现都可以,当然是选了递归实现的前序遍历)
  2. volatile的作用(汗!只听过,没细究,直接笑着回答不会)
  3. c语言中实现可变参数数量的方法(利用va_list(实际是char*类型)、va_start、va_arg、va_end,后面三个是用宏写的函数)
  4. 会AI不,不会
  5. Docker技术了解不,讲了一下其特点,系统级上的窗口,与虚拟机相对比
  6. 算法题:计算陆地块的数量,这题来源于leetcode,之前手写过代码,依次遍历加DFS
  7. 算法题:寻宝(多个),再到终点开门,求最短移动的次数。(直觉是利用动态规划,讲解了一个复杂度高的思想,然后被问有没有快一点的思想,真想不出)

会写定时器吗?(不会)

 

第三轮面试:

         这轮面试不考察技术,相对来说比较轻松一些。提问涉及内容就比较宽泛,如兴趣、就业地域选择、如何处理压力、在学习过程中遇到的最大困难及如何解决的、如何看待网易公司的企业文化、当然还会问你家庭情况、是否有女朋友等等。一开始找不出这轮面试的意义何在,总觉得自己回答都还OK,不偏不激。但随着自己对面试游戏公司的深入了解,我才有所发觉他们更看重的是什么。具体的回答,将在介绍完所有游戏公司面试后再一起给出吧,见面试游戏公司总结。

 

网易互娱

网易互娱一面(电话面):

  1. I/O模型,并详细分析信号驱动I/O模型(回答出来,结果说不对,原来他想让我详细分析I/O复用模型)
  2. 由第一问衍生行select和epoll的区别(从fd的数量、fd状态检测、I/O消息传递效率三方面回答即可)
  3. 详细讲述一下守护进程产生的过程?

fork、setsid、chdir、umask(权限重设范围,感觉没回答出为什么要这样设置,面试官有点不满意)、关闭无用的fd(STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO),另外还问了如果两次fork会怎样,没有碰见过这种情况。(补充:两次fork后,然后关闭第一次fork的程序,这样做可以使得第二次fork的程序成为init的子进程,即使第二次fork的程序被kill后,相应残留资源会被init清理,而不至于出现僵尸进程。)

  1. MySQL的进行检索时的算法有哪些?
  2. MySQL的默认引擎,建立索引的数据结构?
  3. 主要是通过5来引出,innodb的索引为什么用B+树而不是红黑树?(主要是内外内查找的区别)
  4. 一个网络中,主机A向服务器B请求消息没成功,有什么手段排错?
  5. 还有什么问题问他的?

 

 

网易互娱二面(终面)(三个面试官,人人面前一台mac,阵势有点浩大)

  1. 自我介绍+未来职业规划
  2. select可支持fd的个数?

我回答了1024、512、128都有,根据内核来确定。可以修改,但需要重新编译内核。然后面试官死缠着这个问题不放,说你研究过select函数的源代码吗?然后和我讲解它为什么是1024。说白点,他认为是1024,不能修改。其实我想表达的意思是:posix1.0标准没有规定这个值的数量,所以可以根据内核来设置。每次修改此值,便需要重新编译内核,所以不太建议修改此值。

  1. 游戏开服时,有千万级登陆量需要鉴权,设计一个后台架构处理这种并发情况?

面试官说了,这题是笔试题,拿出来再来考考。说实话,我对这题没有很大把握,之前也没做过方面的设计。

个人见解:

  1. 架设多台服务器,每个服务器开启线程池用来处理请求。
  2. 由于只做鉴权处理,可以将数据库中的表信息放置至缓存中,避免数据库I/O操作,同时利用缓存也可以提高访问速率。
  3. 由于多个并发请求过来,需要将多个请求分摊给多台服务器,怎么处理这种情况?在多台服务器前面再开设一台服务器,开启线程池。专门用来处理请求分配给后续各台服务器的问题。此处被质疑啦,因为整个系统处理时的瓶颈全落在最前面这台服务器上。(无言以对,实在没有这方面的经验哈,抓狂!)
  1. 沿续上一题,如果怎么获知修改了数据库信息?也就是说什么时候更改缓存信息。

一开始,我回答,如果更改了数据库信息,则数据库会触发一个信息,只要检测到此信号,便需要更改缓存中表的信息。不满意这种回答。

转换思想,从服务器端出发,如果用户需要修改表的信息,这种行为,服务端肯定会提前获知。于是根据这种获知信息,再去修改数据库,最后更新缓存中表的信息。

  1. 最后给我介绍了一下,该部门的构成,他们所属是开发组等相关信息。再就是介绍了一下薪资构成,问了一下我的薪资期望。(感觉希望还是挺大的)

说实话,此次终面,感觉时间性价比好低,从上海大老远跑过去,只面了一小时不到,就完成战斗。感觉太快了。然后又得再到那边待一晚,第二天才返回学校。太累!

 

搜狐畅游

         搜狐畅游是属于搜狐旗下的一家游戏子公司。公司规模当然比不上网易和腾讯,所以不玩游戏的同学可能不太了解。通过笔试后,采用视频面。

  1. C程序内存分布模型是怎样的?
  2. 平时用什么系统工作?
  3. gdb调试时查看栈的命令是什么?
  4. 喜欢玩什么游戏?
  5. 你期待的薪资是多少?
  6. 还有什么问题要问的?

大致能记得的问题就是这些,或许自己的水平太low吧,但好像面试官也没问什么问题。感觉太水了,水到直接怀疑自己的能力。唉,该怎么去说呢,接着介绍下一家公司吧。

 

巨人网络

一面(技术面):

         巨人的一面面试官一上来就板的面,搞得我欠他似得。感觉所问问题没有多大的挑战性。

  1. linux系统与window系统的区别?只知道linux将一切视为文件来处理。
  2. 解释一个typedef类型的问题,有点怪,形如:typedef char *p[](int)。一开始让我有点懵B,因为他根本没有给出typedef这个关键字。其实这种问题在《C专家编程》中有完美解答,不解释。
  3. linux启动一个mysql服务器的命令?service mysqld start  结果他要分步命令,不知道。
  4. 数据与链表的区别?老生常谈的问题。

二面(综合面):

         没有问技术问题,只是了解一下我所做过的东西以及是否对爱玩游戏。这位面试官,人真的很好。很乐意回答应聘者的提问。正也是从他的回答过程中,我才逐渐醒悟,游戏公司更看重应聘者哪些方面的品质。具体我会在游戏公司的面试总结后感中详细解释。

三面(HR面)

         眼前的这位HR是位非常年轻的小姐姐,似乎还没有我的年龄大。对话时,感觉那种紧张感不是自己,而是她,哈哈哈。按事实回答就行,没有特别让人惊艳、值得记住的问题。

 

腾讯

         腾讯公司在做游戏这块主要侧重于C++后台开发,而自己也是着重准备这方面的基础知识。正如我最开始时在放在前面想说的一些话中强调,给自己设立一个目标,并朝着设立的目标默默、努力耕耘。因为在这个默默耕耘的过程中,你会顺便收割一大批公司的offer。这难道不是一件非常有趣且值得自豪的事嘛!所以说,进入腾讯做后台开发是我给自己最初设立的小目标。从找工作起一开始,至始至终都没有改变过。当然啦,室友热衷游戏,也非常想进入腾讯。对我而言,岂不也是件好事,一来自己要达成目标,二来也可以替室友完成进入腾讯的心愿。有没感觉这是一件搞笑中又带点正能量小插曲故事,但十分真实。

         说实话,在写这块内容时,内心多少是有点抗拒的。理想的美好与现实的残酷在此处并存。准备找工作期间,每一次想象腾讯的面试都可以带来一丝丝紧张。每一次幻想拿到他的offer后自己会开心成什么样子。自豪、努力与回报、成长、优秀等等都洋溢在面上,呵呵,只供想象罢了。这样的快感几年前有过,没想到研究生期间还能再次去重温这种经历,难得呀。试问一下,一个人能有几次这样的经历?如果有的话,说明这肯定是一件值得你去奋斗的经历。之所以这么热衷于腾讯,我觉得还是有必要谈谈的。首先,腾讯在互联网技术储备上,在国内应该说具有雄厚的实力;对自身而言,能在这样的环境中工作与学习,有利于扩展眼界,也有利于自身实力的提升。其次,公司发展前景还是很不错的,至少有好几个产品已经深入国人的日常生活中,不可或缺。凭借这几款产品足以说明问题。最后,当然是所谋岗位与自己的技术特点吻合啦。这个是极具重要的因素之一。不过,进入腾讯做开发工作在普通人眼里要求还是有点高的,面试过程具有一定的挑战性。但用不着慌,面试这种事,第一看重你自身的实力;第二需要选择好的岗位,别往人缝中挤;第三运气有时候可以帮上大忙。自己实习期应聘腾讯时,由于自身基础知识匮乏栽个大跟头。心想着半年后我还会再回来的,到时会让面试官你看见不一样的自己。半年后,信心满满、踌躇满志地过去面试,结果还是被喝当头一棒。这回的面试官真是不待见,一副高高在上,见人不爽的样子。或许自身能力确实有待考验,但我还是会把原因归结于面试官。因为当面试完走出酒店时,我得到的更多是一种解脱,无论结果如何,都可以选择淡然的面对,而不是实习面试时那种对自己能力不够的懊恼。所以建议大家尝试抱着一种“过程竭尽全力,结果随遇而安”的心态去积极工作和生活。

        

一面(只走到了一面,实习+秋招一起写吧。由于没有激起兴奋点,加快了面试问题遗忘的速度)

  1. TCP的四次挥手?如果第三次挥手的FIN报文没有被对方收到会怎么样?
  2. 有关TCP窗口大小如何控制?从拥塞控制、流量控制的角度回答
  3. TCP报头的结构讲述一下?
  4. 写一个快速排序?
  5. 写一个有关二叉树遍历算法变型题,即寻找出所有从根到叶子节点数字和为给定数字的节点组合?这题leetcode上是存在的,利用前序遍历+回溯法即可。
  6. 还有一些问题实在记不起来,或许是伤心的事,不太想重复去回忆,抱歉。

 

后感:

以上几家(网易游戏、网易互娱、搜狐畅游、巨人网络)游戏公司,在技术面试时是十分看重应聘者有关后台开发基础知识掌握程度的。但是需要更加明确一点,这是一类由技术支撑的游戏行业。除却技术面考察你的计算机基础知识外,面试官都会问你玩过哪些游戏,对这些游戏有怎样的看法。在我看来,技术的东西可以在公司进一步学习,而应聘者对游戏的热爱程度在他们看来是没法培养的。如果你不曾拥有一颗热爱玩游戏的心,除非你的技术着实高人一筹,否则很难打动面试官。腾讯是我面试的最后一家公司,至此,秋招总算是告一段落。本来是想以面试时间顺序写下公司面试问题及后感,但看起来总是不爽。于是根据面试岗位对公司面试情况进行分类记录,感兴趣的可以继续往下阅读,好饭不怕晚嘛。

 

 

携程

这是主要是以java开发为基础的电商公司,可我所掌握C/C++。八杆子有点打不着,就当是混面经去的。学弟学妹们,记住一点哈,面试技巧这种东西是自己在实战过程中总结出来的。人家说的再多而你不去实操,犹如纸上谈兵。所以请珍惜每一次邀你面试的机会,务必认真对待。

以下是面试过程中相应的问题:

  1. 针对高频率访问数据库里的表(静态,很少改变),如何减轻访问数据库的压力?

将数据库中的表映射到缓存内,访问缓存即可

  1. 访问接口1要花0.5s,访问接口2花0.5s,访问接口3花1s,依次访问需要2s,如何做到缩短访问时间。

开多线程,并发访问

  1. 接2题,当某个时间段,大量访问这些接口,怎么做既不增加CPU资源,又能满足大量访问?

每来一个访问就开一次线程,需要耗时间,同时线程数量需达到一定数时才被回收线程资源,这样又相当占用资源。

此时最好的办法就是开辟线程池,重复利用此前已完成任务的线程。

  1. 字符流中将数字有序排在前面,字母按字典序排在后面。

利用基数排(需要哈希)

  1. 往hashmap中存放(key,value),如果并发存放会存在什么问题,如何处理该问题?

并发存放会存在哈希碰撞,处理此问题需要加锁,如果锁住整个hashmap,效率低下,只需锁住key即可!

6、有序数组,找到指定数字的下标(二分法即可)

 

美团

         美团的后台技术是以java开发为基础的。虽然面试官总强调会哪种语言无关紧要,除非你确实有其他方面的闪光点。不然,和其他会java做后台开发的同学相比较,已然输了一大截,唉!后续以java开发为基础的公司更加如此,有关此处的续述参考电商面试后感小结。

美团一面:

  1. 讲述找开一个网页到看见内容,中间所经历的操作
  2. Dos攻击
  3. tcp/ip三次握手,服务器发syn/ack报文后,没有收到ack报文会怎样?
  4. tcp/ip四次挥手,客户主动断开连接,服务器在发送ack报后即断开连接,会发生什么情况?
  5. 画一下自己认为的后台开发的知识框架
  6. 看过哪些书?
  7. 2万个车牌,如何分配?开放性问题。

美团一面过后,感觉自己面试非常糟,根本不再考虑会有二面通知。以至于我一个人静静蹲在面试酒店外面,想想为什么这样,人家随意提个问题,自己回答都非常吃力。人生太过艰难,想求得一个职位太难啦。

 

美团二面:

  1. 论文介绍(占用很长时间)
  2. C中变量未声明的检测发生在什么阶段,为什么不发生在链接阶段,
  3. 使用new申请的内存,用free释放会怎样?
  4. C++中,使用STL时,程序在STL库中出现故障,如何排除?利用coredump文件查错
  5. 使用STL库有什么缺陷?
  6. 函数外与函数内利用static定义的变量,其初值是什么,为什么是0?
  7. 说一上自己为从事后台开发学了一些什么知识?
  8. C中数组和指针的区别?
  9. C++中,类内virtual关键字的作用?
  10. socket中,select与epoll的区别
  11. 美团一面中,回答不好的问题是什么?其是就是第3点。
  12. 进程与线程的区别
  13. 什么是内核态?
  14. 有什么问题要问的?我问为什么不考查算法。。。之后就是摆龙门阵。

 

美团HR面:

         聊家常,聊爱好,很轻松,感受不到压力。问了她一个问题,美团与大众点评的战略定位是怎样的?

 

银联与平安科技

         此处放这两家公司的面试经验,说实话,带有一点吐糟的性质。无论是从笔试还是面试来看,感觉都不太顺利。这种不顺利的原因,可能是与自己所掌握的开发语言相关。两家公司,均报的是后端开发。

银联笔试:

         只讲讲专业技术题吧。报的是后端开发,当时岗位要求中明明写明java/C/C++/python等会一种即可。结果所出题全是有关java题,呵呵!何必呢,损坏人家对你公司的印象。

银联一面:

         一面类似于产品经理招聘过程中互相撕的大组讨论环节。个人觉得对于做技术的人来说,这集体面试有点形式化,而且很容易过。不作过多讨论吧。

银联二面(技术面):

  1. 学过数据结构吗?数组和链表的区别?
  2. C++中什么是引用?
  3. 讲述一下归并排序?
  4. 给大量数字,让你给它排序?考虑内存溢出问题
  5. 做过什么后端相关项目吗?直接回答没有,因为他根本就没有打算录用的想法。

银联面试只持续了15mins吧,应该算是和平安科技一样敷衍型面试。至于平安科技的面试内容,也就没必要贴出来。

 

后感:

以上几家(携程、美团、银联、平安科技)公司,我将他们归为电商类公司。需要看客们注意啦,后端开发里对开发语言的需求在电商类公司看来是非常重要的。互联网企业的后端岗位所需求的无外乎java或C++。这些企业在我看来,大概可以分为阿里系和腾讯系。阿里系所需求的后端开发语言更侧重于java开发语言,例如,阿里、京东、美团、携程、小红书、银联、平安科技等。想必大家都能看出来,这些企业更属于电商性质。所以说目前国内懂java的程序员还是很好就业的。而腾讯系则更侧重于C++开发语言,例如,腾讯、网易互娱、网易游戏、巨人网络、搜狐畅游等。游戏公司更倾向用C++作后台开发。

 

 

TP-LINK

一面(技术面)

  1. 针对笔试试题1提问,排序算法为什么要用sort,可以自己写一个吗?按道理来说,这是非常简单的,不成问题。
  2. 针对笔试试题2提问,你所写的内存池可以解释一下吗?吓尿,内存池的代码(可以参考源码剖析)我是从网上load的,直接坦白了,不会。
  3. 做过什么项目,讲一讲所发表论文的内容?这一问回答的非常详细,自己亲身做过的东西,要做到一气呵成的讲出来。
  4. 哪里人,对就业地点有什么要求?

 

二面(综合面):

         回过头来想一下,TP-LINK的综合面基本上还是挺简单的。只是当时没有把他定位成综合面,弄得人心惶惶。毕竟TP-LINK是属于提前批面试,也是我最早面试的公司,很多面试技巧都不成熟。现在再想想,真心感觉很有趣、好好玩!

 

华为

一面(技术面,根据自己的经验写点应对的技巧吧):

华为一面我的是一位女面试官,看上去非常的平易近人却隐约透露着一丝丝严谨性。所以面试过程中千万不要大意,尽可能的将自己所知道讲出来才是王道。华为的面试官非常看重个人解决问题的能力、在项目承担什么职责以及学习能力。果不其然,一上来就问我的项目经历。说实话,有关这一点在下实在汗颜,于是给她讲了有关我的小论文研究内容,详细陈述了idea的构思、验证、实现及产出的整个过程。边讲边给她在纸上笔画笔画,说实话,我猜她也没听懂多少,隔行如隔山吧。这部分讲完后,她问了一个tcp建立连接以及拆除连接的过程。心想这部分不正是我所熟悉的嘛,非常有必要在这个地方扩展一下。于是我从套接字socket、bind、listen和accept函数建立服务器必备过程,以及利用套接字socket、bind、connect、close函数客户建立连接以及拆除连接的过程出发,详细讲解了tcp三次握手发生在哪个函数中以及如何建立连接,四次挥手同上。讲的感觉有点太过详细,结果面试官还说了一下掌握得挺详细的,搞得我都有点不太好意思。接着又问tcp与udp协议的区别,其实这个地方又可以扩展详细讲解,比如从可靠性出发,tcp协议采取什么手段确保可靠性(从引入报文序号、超时重传、对报文的ack、对报文排序、滑动窗口的调节等方面入手)。当然这个问题我只是快速的回答了他俩之间的差异,就接着被问下一个问题。有学过java吗?恕在下不才,没有学过,但想学,只是现今找工作阶段由于时间关系,想以C/C++为基础语言应聘软开职位。说句真心话,等找工作结束后,真想静下心来好好学一下java。还没等我回过神来,又问我说说C++语言有缺陷。这个问题如果放在平时,我根本不认为C++语言除了难学之外还有什么缺陷,实际上我根本不清楚C++语言的缺陷。但面对面试官说自己不知道,是不是会有点low。稍作思考,倒觉得可以从动态内存分配入手作答,毕竟这块需要C++程序员手动分配内存及删除内存,确实让人头痛。而这点却又正好是java的jvm垃圾回收优势所在。接着,又讲C++由于存在指针也有点不好(java没有哈),感觉有点说漏嘴了。因为C/C++的指针是其优势所在,怎么到我这里却成了缺陷,所以又要将其圆回来。心里万马奔腾哈!只是支持java阵营的人觉得C/C++引入指针特别碍事,而C/C++阵营的人却又特别喜欢指针。好吧,我只能将自己挖的坑成这样了。千言万语一句话,凡事要想好再说。最后还讲了一下多重继承是C++不太好的特性(隐约记得梅耶大师在其著作中写着能不用多重继承就不用,可能多多少少存在些缺陷导致吧!)。至此,一面结束,换来了面试官一句话:一面面试通过了,在外面等候二面吧。

 

二面(综合面)

稍作休息,便接到二面通知,面试官是一位35岁左右的绅士,全程非常淡定,不苟言笑。自我介绍完后,便问你是学通信的,为什么想着从事编程,什么时候转向软开,如何准备的,大概说说情况。心酸史就不细说了。接着问了我如何看待华为的压力。中途他还接了一个电话,正好容我好好准备一下应该怎么讲。但从面试的我过程来看,有几个小小的空隙有点冷场,我觉得我讲完了,他却不提问。或许是在作记录吧,但愿如此。感受不到他对我的认可,有点点淡淡的悲伤。接着他说举一件经历过压力较大事情。感觉这种问题是必问的,所以在二面之前可以适当准备一下。最后问我有什么问题他。说真心话,我真想问,我通过了吗。却又不好意思,这方面真得向有些同学朋友学习,完事后直接发问面试官通过了吗?问了一下在华为如何得到成长,以及凭自己的现有知识储备加学习能力能胜任此项工作(就当是变向发问面试官自己有没有通过吧)。

至此华为面试正式结束,能否通过全靠这两位面试官的考评了。据我获知,如果优招面试没有通过,秋招是没有机会的。管他的,面完后,命运就交给上天吧,想再多也是多余的。

考虑到晚上飞北京,没打算回校,于是接下时间和同学聊聊,也替他们缓解些面试前的压力。

 

中兴

一面(技术面):

  1. tcp的全英文名称?
  2. linux的删除文件/目录命令?rm -rf …
  3. 手写快速排序算法?(这是高频问题)
  4. OSI协议总共有哪些层?

一面没啥挑战性问题。

二面(综合面):

  1. 讲一下项目经历。主要针对所发表的论文内容进行陈述。
  2. 平时遇见过什么大困难?怎么解决的?
  3. RIP是属于哪一层?
  4. 如果有幸被录用签约,讲讲为什么会选择中兴通讯?
  5. 有什么问题要问她?其实我比较关注蓝剑招聘计划,哈哈哈。

 

后感:

以上几家(TP-LINK、华为、中兴)是属于通信类公司。由于自己是学通信出身,面试这几家公司时的底气还是挺足的。在面试这几所通信公司时,给我的感觉是,他们更看你研究生阶段做过什么。记住,一定是自己亲自做过的东西,可以是学术研究发论文,可以是参与的横向项目或有相应项目成果的产出。在此基础上,如果还能拓展其他方面的技术软实力,你将会是他们的香饽饽。

 

 

阿里巴巴

电话技术面:

         这一部分应该是紧接着华为面试内容的。华为的优招面试后,就接到了阿里的电话,要预约电话面,于是选择了当天晚上的20点面试。考虑到21点飞北京,于是整个电话面试过程是在候机室进行的。感觉非常有意思,遂也记录了下来,就当各位看客的解腻茶吧,哈哈哈!

考虑到晚上飞北京,没打算回校,于是接下时间和同学聊聊,也替他们缓解些面试前的压力。突然接到一个北京联通打来的电话,本想挂了他的,但又没被标注黑点,还是接一下吧。电话那头传来,你好,我是阿里***人员,想约你时间电话面一下。虚惊一场,还好没有挂你电话。嘿!正好,反正该来终究会来的,我说行,考虑到这几天要去参会,咱们电面可以放在20号以后吗?感觉像是把他吓到了,不行,时间定今晚8点吧。我跟他说明了一下9点登机,只有一个小时的面试时间。约好时间后,便开启了自己查漏补缺的行动。说实话,这一天还真心累的。后来,等同学二面完后,一起吃了个饭,便去机场候机了。因为时间有点赶,到机场都已经19点30了。各种排队,还好赶在5分钟前把所有事情都安顿好了。

顺利的接到了面试官的电话,开始了这疯狂一小时电面。

内容(不再详细介绍,只说说自己的盲区,以便后续好好复习总结):

i、四次挥手断开连接中,服务器在发送FIN完后,提前关闭连接会怎么办?

感觉是client发送ack报文后,由于server提前关闭连接,导致server识别不了client所发的ack,返回一个rst报文。于是client在收到rst报文后,判断server出现异常等情况(非准确答案,有待考究!)

ii、#ifdef  #else作用

只说了一下防止多次声明,面试说还有更重要的特性(有待考究)

iii、宏定义#define与inline的特点区别,即使#define存在毛病却还在使用#define.

    iv、tcp如何调节窗口大小

    v、算法题,重在思想的讲解:给定的一串含字母数字的流,将数字放前面有序,字母放后面有序。

    解法:采用基数排序(利用hashmap映射,生成一个存储空间为62的数组),分别记录01…AB…Zab…z各有多少个,最后遍历该数据生成排序数据。

说一下最后一道算法题的遭遇吧,可以说是非常尴尬。当时是20点40,他出的题,说实话,9点登机吧,20分钟解题还要登机,汗颜哈!好在一瞬间便有了相应的思路。回答给他听后,不满意,复杂度高,需要降复杂度。还剩十分钟,面试官也知道我时间紧急,劝我说,10分钟静下心来再好好想想。又过了5分钟,实在想不出,希望面试官提供点思路。最后建议从最小复杂度的排序算法和hashmap角度出发,再加上灵光一现,才有的最后思路。以为到此为止就完,要知道我现在左手端着手提、右手拿着手机,边排队边面试,最后面试官又问此排序算法的复杂度怎样?说实话,在复杂度分析这块自己平时没放太多精力,在加上自己当时又弄错了登机口,根本没有心思想了。因此回答的不太好,临挂机之前,鼓起勇气问了一下,我的后续机会还大吗?当挂完电话后,才发现周围的人全在注视着我,感觉他们的潜台词说自己是一个工作狂似的,实在不好意思,这个电话实在太过重要了!

至此,终于放心登机了。8月15号有点不一样,太过充实,也太过疲惫。

         虽然说阿里是是java系的电商公司,但我报的是C/C++开发岗。该怎么说这一段呢!阿里的面试过程有点迷,看客们自己以后可以深入了解一下。后面由于阿里笔试时间与别的公司相冲突,我选择放弃阿里的面试啦!如果以后有看客们看过我的博文或面筯贴,成功入职阿里C/C++开发岗,可以联系我,或许我们可以坐下来,喝杯咖啡聊聊,这会非常有趣,哈哈哈!

 

OPPO

         OPPO公司应该算是我霸面且成功拿到offer的一家公司。由于前期的操作失误,导致我错过参加OPPO的笔试机会,从而没有直接获得面试的机会。但在这里我要谢谢龙哥,没有他向OPPO的HR推荐,我肯定是无缘面试的。这家公司我报的是C/C++开发(手机方向)。面试一共分为三轮,技术面、综合面、HR面。

 

一面(技术面):

  1. define与inline的区别,即宏定义函数与内联函数有什么区别?
  2. static关键字的作用?从名字冲突和类内static的使用上进行说明。
  3. C++中的类内用static修饰的成员函数有什么作用?
  4. static关键字修饰的成员变量是要在类内初始化还是类外初始化?这个问题是面试官用来玩弄我的。在我的印象中,是要在类外初始化,什么时候用它就什么时候初始化,但回答不出来为什么要这样做。而面试官最终给我解释,在C++某个标准以前只能在类外初始化,之后类外类内都可以进行初始化。说实话,有些哭笑不得。
  5. 动态链接与静态链接的作用?
  6. C++底层是如实现通过类的成员函数访问成员变量的?一定要回答到类的隐藏指针this上面去。
  7. 解释一下面向对象的思想?

 

二面(综合面):

         二面的面试官是OPPO公司的一位项目team负责人,给我感觉就是很懂技术。一上来就问我研究生期间所研究过的东西。当然,毫不含糊的给他讲解,从MIMO技术怎么过渡到空间调制技术。然后我所做的东西是什么,所取的成果又是什么。面试官略作思考,觉得我所研究的东西很难进行落地。给我的直接印象是,看来是遇上同行了。找了个机会问面试官,曾经是不是研究无线通信领域?果不其然呀。面试官对我研究过网络编程比较感冒,于是问了一下建立TCP连接需要调用哪些套接字函数?这个回答对我来说,根本不成问题。回答完后,感觉面试官就特别想要录用我。后续的聊天非常轻松了,各种介绍他自身的经历,吧啦吧啦说OPPO很需要技术人才之类的话。

         二面完成后,就知道自己大致可以被录用了。这两轮面,总体感觉还是相当不错的。整个秋招期间,我对OPPO公司的印象非常好。谢谢!

 

三面(HR面):

         由于公司特别想招我们学校的学生,应该说这一轮面试基本上不成问题。无外乎问就业地域选择、薪酬期望、抗压能力、教育、家庭背景情况之类的。很轻松!

 

海康威视

         海康威视面试过程分为两轮,第一轮是技术面;第二轮是HR面。我报的岗位是C/C++开发。

一面(技术面):

  1. const关键字的作用?基本上C++中出现const的地方都可以作为const的作用说出来,特别是const的顶层用法和底层用法,如int * const p=&a(顶层特性); const int * p=&a;(底层特性)
  2. C++中面向对象的思想?这个问题相对来说就非常easy啦!OOP思想的三大特性:抽象封装、继承、多态(动态绑定)。这种问题会问的十分详细,特别考察你是否真正深入了解过面向对象编程的思想,各位看客位有必要好好研究一番。
  3. static关键字的作用?可以参考我的博文总结,链接:https://blog.csdn.net/TT_love9527/article/details/81537466
  4. 为什么要有名字空间?
  5. C++实现反转一条链表?很easy的一道算法题,只是当时隔久有点生疏,但还好,最终还是写出来了。这充分说明,平时多练习编程是十分必要的。想想最近自己又落下了,汗颜,继续加油!
  6. TCP的三次握手与四次挥手?老生常谈的问题
  7. 还有一些问题无关痛痒,但实在记不起来了,抱歉!

 

二面(HR面):

         一上来当然就是自我介绍之类的话。但一开始我没意识到二面是HR面,所以略有些紧张,还特别介绍有关我专业知识细节。结果面试官直接说他不懂技术细节,这是HR面。至此,我已轻松多了。然后和大多数其他公司一样,各种聊有关你是否会和他们公司签约的因素。在签约选择上,需要更看重哪些因素,具体我会在签约选择单独有一小节说说我所考虑签约因素,参考后面考虑签约因素小节,此处不再赘述。

 

如果看客们想去杭州发展,个人觉得海康威视还是不错的选择。这家公司仍处于成长上升阶段,而且公司侧重安防这块,公司立意及使命使得它的舞台非常大。

 

思科

         有关思科公司求职岗位,我选择的是偏C/C++开发方向。所以面试时,理所当然就被问及C++的基础知识。思科面试一共分为三轮,每一轮面试的侧重点都不一样。一面主要考查对数据结构的理解;二面考查对C++基础知识的理解;三面,其实我是没有看懂考察哪方面,迷。

一面:

  1. 给一条链表,对中间的某段节点进行反转?解决思路就是来源于链表反转,没太大难度。但一定要完完整整、一点不错的写出来,考察平时的基本功吧。
  2. 给一串含正负的整型数字,如何将负整型数的绝对值与正整型数排序?要少花时间和空间。

二面:

  1. STL库的特点?迭代器、算法、容器
  2. C++11标准知道哪些?很重要的一块就是加入了智能针指
  3. 智能针指中shared_ptr和weak_ptr的区别?weak_ptr是用来破解shared_ptr可能存在的环,这一块是我不太熟悉的,从容向面试官坦白。面试官人很好,非常大方的给我讲解这方面的差异!哈哈哈,面试官性格太好了,非常适合当我的lead或导师。
  4. C++中含有虚继承类的底层模型?可以参考博文:https://blog.csdn.net/TT_love9527/article/details/82382095
  5. const的顶层特性与底层特性区别?
  6. C++面向对象思想?
  7. 然后给我介绍公司目前在干什么,问我有什么要问他的?给我感觉,面试官非常NICE。

三面:

         目测是校友,聊天很亲切。

  1. 怎么准备软开的?看过哪些书?做过哪些算法题?
  2. 写一个二叉树遍历过程。
  3. 聊天,很搭。

 

后感:

         以上几家(阿里、OPPO、海康威视、思科)公司,所应聘的是C/C++开发岗。这些公司非常考察应聘者基础知识。有关数据结构,你就要扎实的能写出相应代码。有关C/C++,需要对语言的基础特性十分清楚。既然是C++开发岗位,当然需要知道并熟悉C++的一些高级特性。仅仅只是用C++语言来解决一些算法题目是远远不够的,很容易被人家问出你的底子来。冰冻三尺非一日之寒,早作准备,充足准备,这些公司都将是你的菜,加油!

 

技术面与HR面各自特点

         技术面是非常考察应聘者基本知识掌握程度的。互联网公司的技术面一般会分两轮,第一轮面试官通过基础知识、项目经历、编程能力、思维扩展性等方面综合考查面试者并给出相应的分数或评价。根据一轮面试的结果情况会对面试者进行二轮面试邀约。二面也是考察技术方面的知识。当然,面试也是存在着运气成分。如果面试官恰巧问了一个你非常熟悉的问题,而你又回答得十分圆满,这会给人留下非常好的印象。记得网易互娱的电话面,面试官问了如何创建一个后台进程的问题?这个问题在《Unix网络编程》卷一中有详细说明,其次在《后台开发核心技术与应用实践》中作者进行归纳性陈述。由于自己了解过这方面的知识并且十分清楚创建过程,回答令面试官十分满意。以至于二面时,面试官问我是否查阅了相关资料再作陈述。这让我十分高兴却多少有些汗颜,就这么不信任人家么。技术面过程中,多多少少会问及你是否有过相关的项目经历。如果有做过相关方面项目并给详细陈述出来,面试官会依据你所陈述的内容进行相应提问。这应该是面试官和应聘者之间都互相希望的套路,即所谓的找共同语言吧。如果没有项目经历,那一定要做好扎实的基本功准备和增强自身的编程能力。说白点,你一定要有自己能够拿得出的闪光点而值得面试官为你打开录用的大门。

         HR面一般不怎么淘汰应聘者。希望你能在和HR对话中,表现出积极、阳光、渴望贵公司职位的一面。在我的印象中,HR没权利定你的职位级别,也就是说你薪酬大体是确定的。少量公司会赋予HR给予你少量涨薪的权利。真实性有待考究,这只是我个人见解。但给予人阳光、积极一面,无论是工作、生活、还是平时都是非常重要的。祝大家好运!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值