由于大四上快结束了,即将面临毕设的开题,学校与郑州这边的一些IT公司达成定向派遣学生到企业实习+毕设的协议,班上的同学还挺积极的,我没参加因为想着要在北京找实习。

趁着周六考完六级,周日坐上火车前往北京,提前投简历确定了参加两个公司的实习面试:薪人薪事和福昕。

周一前往薪人薪事面试研发实习生,提前一个半小时去的,公司在来广营地铁口附近,地理位置不太好。公司内部就是一层开阔的楼层摆放着一些办公桌,大家都在一起集体办公。到公司后,先让我做了一份笔试题,共两题,第一题是用数据结构实现栈,并支持getMax()与getMin()分别取得栈中的最大值与最小值,因为题目比较简单,就写了一个简单的类来实现栈的功能,但不得不说自己的粗心大意。。。忘了实现getMax()和getMin()了,后来面试官面试过程中问到了,我的答案是在类中维持两个变量分别记录当前栈中的最大值与最小值,每当push操作时,要比较新元素与当前的最大值、最小值,并根据大小关系选择是否更新,而pop时如果pop的恰是最大值或最小值,则需要遍历栈中(用数组实现)元素更新最大值、最小值。后来看答案说是借用辅助栈来保存每次进栈时的最值!时间复杂度可以做到O(1)。第二道题是剔除一个字符串中的重复字符,遍历两次即可。

面试过程中先让我谈了自己的毕设计划,我说是做一个爬虫用来爬取微博数据并对数据进行多维的分析,面试官未置可否。之后对着我的简历问了一些问题,问的问题很杂,比如对python中lambda表达式的理解,我的答案是用非函数形式的表达式实现函数的功能。也问到了我的博客实现、git的使用方法等。之后又问了操作系统中进程间的通信方式、SQL语句、数据结构等。因为没有提前准备,之前学过的东西都忘的差不多了,因此答得很不好,这个时候我感觉到面试官好像对我的简历有所怀疑,问了我北航研究生有几个学年,之后问了一道算法题,感觉以为这道题没有答好直接导致我悲剧了。。。题目是已知一个递增的序列,截取序列前一部分放到序列后,现在已知更改后的序列,问怎么确定序列中最小元素的位置。答得很不好,想到了二分,但没有想清楚怎么用二分实现,最后想到用序列最后一个元素在序列中二分查找答案。但这时时间已经过去很久了。面试结束后hr进来说另一名技术人员正在开会,不方便面试,让我回去等通知,我就知道悲剧了。。。

第二天早上去了福昕面试C++开发实习生,值得一说的是福昕就在北航旁边。。。同样是提前去的,等了一个小时后,给我拿了一套笔试题,不得不说题目太多了。。。记得答案一共写了5页,问的主要是C++的内容,也涉及到了操作系统相关知识,同样有进程间通信方式的题目-_-#;感觉总体上答得还不错,但是也有一部分题目没答好,比如C++中定义指向函数的指针、指向函数的指针数组;判断一个点是否在椭圆内(忘记椭圆方程了…);虚函数的实现方式等,一个半小时做完笔试题,之后hr说是技术人员正在开会(大家都好喜欢开会),和我谈了薪资的问题就让我回去等通知了。

下午临时去面了海豚浏览器的后台研发实习生,先让做了一个小时的笔试题,包含25道数据库、java、操作系统、计算机网络、数据结构不定项选择题,以及两道编程题(表达式计算和二分实现)。选择题就不说了因为没准备,所以做的很不好,编程题比较坑的是提供的编译环境很差,而且函数的接口设计的很奇怪。。。于是一道题都没写出来,做完笔试相关人员告诉我悲剧了,就走了。

晚上就坐上回郑州的火车了。。。

总结一下面试的教训:

  • 投简历要定向投!!!投简历要定向投!!!投简历要定向投!!!这次虽然面了三个公司,但是只有福昕算是对胃口的,其他两家要求的知识储备太多。

  • 一定要提前准备!

  • 面试中公司在本心上是不相信你的简历的,所以会花相当一部分时间试图来验证你的简历是否作假。

  • 尽量多投几家公司,既可以增长面试经验,又可以意识到自己的不足。

正是由于这次面试的失败,让我意识到了自己的不足,这样才可以让自己更好地与社会工作岗位接轨。

近期规划:

  • 认真攻克C++上的难点,学习多线程编程、窗口消息机制

  • 看看数据库、操作系统相关内容、面试题

  • 复习并学习面试中常考算法、数据结构

FIghting!