大概总结一下自己的面试过程,希望能给求职路上的各位小伙伴一点帮助。
全文均为作者的个人观点,不足之处欢迎斧正,不喜勿喷。
自我介绍:
自我介绍一般应该是自己简历的概述。
举个例子。我一般会这样开场:“我叫某某某,是来自某某大学的在读研究生。我比较擅长 C 和 C++,写过一些小游戏,所以编程能力也算不错。参加过多次 ACM 竞赛,也取得了一些名次,所以对数据结构和算法也掌握的比较好。我最近在看《Unix高级环境编程》,所以对操作系统有一些了解。”一方面,简洁地介绍自己的专业技能:C/C++、数据结构和算法,等等。另一方面,与简历上面相关的记录对应,比如曾编写过的代码以及取得过的奖励等。
技术面试:
这是面试中最重要的部分,成败在此一举。
项目介绍:
面试官一般都会先从项目开始问起(当然也有不问项目直接开始问基础知识的),这也是我的自我介绍中不说自己做过的项目和论文的原因。
我介绍自己的项目,分为三个步骤:1.尽量用两三句话介绍项目的功能或实现的目标。2.项目的难点在何处,或者说项目的具体需求是什么。3.通过什么方法解决上述的问题。
第一步时,我会尽量通俗易懂、不带任何专业词汇去介绍。一方面,面试官只有能够听明白,才可能产生兴趣;另一方面,如果刚开始介绍,就把项目说的很晦涩难懂,面试官会有理由怀疑你的表达能力。后两步,主要是看你项目的深度,做的越深内容越多。
我举个我自己介绍项目的例子:
“我需要实现的是在不同光照情况下检测到路标,从而达到多阈值自适应的目的。其中最主要的是,我要记录不同阈值中的轮廓数据,并将其进行比较,保留合适的数据,并删除不符合条件的数据。也就是说,我需要存储数据、支持快速查找,并能够迅速插入删除。刚开始我使用的是链表,但是发现链表的查找速度太慢,就改成了红黑树。其实使用哈希表也行。”此时,如果面试官感兴趣,他可能会问红黑树或哈希表的具体实现方案,或者是红黑树与哈希表的区别,等等。
“由于程序中会产生大量的数据,会不停地创建、删除结点,而申请和回收内存的 new 和 delete 操作是比较费时的,因此我做了一个简单的内存管理。”这样,面试官就有可能顺着我的思路问我内存管理是怎么做的,可以如何改进,遇到某种特殊情况时应该如何应对,等等相关的问题。
介绍项目时,如果面试官对你的项目涉及的领域有了解,会追问一些具体细节,从而考察你的基础知识。否则,若面试官对你的项目不太懂或不感兴趣,则会直接开始问基础。
基础知识:
这部分主要是考察自己平时的知识积累,我没有什么太多技巧。
面试官一般都会从很浅的知识点开始,逐步深入考察你对整个知识体系的了解情况。这种行为被同学戏称“问你问到死”。面对这种情况,除了多看几本书、多看几遍书之外,我没有更好的方法。
举个我被“问到死”的例子:1.进程和线程的区别。2.进程间切换和线程间切换的区别。3.线程间各自独立的是什么?共享的是什么?前两个问题我能答出来,但第三个问题只能答出一部分,当面试官追问我“除了你刚才说的那些,线程还共享什么内容”时,我只好说我不知道。我只知道,面对一而再再而三的追问,光看一本《计算机操作系统》肯定是不够的。
有时,面试官会把自己工作中遇到的问题交给你来处理。比如“我有两个读文件的函数,第一个每次读取 3K 数据,第二个函数每次读 4K。经测试我发现第二个函数比第一个函数快,这是为什么?”这种题目,面试官一般不会要求你第一次就能答出来。当你给出了几个答案,却还是无法令面试官满意时,你不妨找他要一点提示。如果能通过提示做出来也是可以的。
不要害怕向面试官要提示。如果遇到不会的情况,你能够通过寻求帮助来解决问题,不但展现出了你的沟通能力,而且比你直接放弃要好得多。
编程题:
和基础知识一样,这部分也是掺不了假的。
我的做法是,拿到题,1.弄清楚题意;2.确定程序的逻辑;3.考虑好边界情况;4.写代码。
举个例子:链表排序题。
1.我会问清楚链表是单链表还是双链表,链表是否有环等细节,直到我觉得我已经完全理解了这道题的题意。
2.我先说出我的程序逻辑,此时,若不能令面试官满意,他会给出提示。比如,如果我说用直接插入排序,面试官会让我再想想其他方法。当然,有时也会遇到面试官不愿意和我讨论程序逻辑(其实他是希望我能够独立解决问题)的情况,此时就不要继续说下去,自己在脑海中把程序捋清楚。
3.考虑边界问题,比如考虑输入数据是否会有问题,或者在程序运行时出现问题(比如需要对文件进行操作,但打开文件失败时),应该怎么做(比如,返回一个特殊的值,或者抛出异常)?在考虑边界问题的时候,不妨问问面试官。即使他希望我独立完成问题,但边界情况他还是会给出建议的。
4.手写代码。如果前三部分都做好了,这部分其实没什么太多需要注意的。在程序的关键位置写上注释,既方便自己掌握整个程序结构,又能给面试官留下拥有良好编程习惯的印象。
如果需要提升自己的编程能力,不妨挑个提供“代码在线评价”的网站并做一些题目。
应聘者提问:
这部分主要显示出你对这份工作、这个公司,甚至是这个行业的兴趣和热情。但是,我觉得,这个环节的表现,只是锦上添花的,并不能起到更实际的作用。比如,语文考试,字写的好看,作文的分数能稍微高那么一点点。
面试前,我会先调查这家公司的工作环境。面试时,先简述自己对公司工作环境的理解,然后询问面试官,他在这家公司工作是一种什么体验。接着,询问他目前的工作。如果他的工作的某一部分我恰好有了解,那就再先说出自己对这部分的理解,并再次询问他稍微详细一些的内容。总之就是表现出自己对这家公司或这个职位很感兴趣。
行为面试:
对行为面试,我谈不上有什么经验。我一般是以真诚为主,适当地吹一点牛皮。
我大概把非技术问题分为两类问题。第一类是关于整体行业的发展、对公司的看法,或者自己的职业规划的问题。要回答好这种问题,自己必须做足功课,对行业、公司以及应聘职位有一定了解。这类问题早思考会比较容易早有想法。第二类问题,一般是“你有哪些缺点”、“你遇到的困难是什么?你是怎么做的?学到了什么?”这方面的。在回答这类问题时,不只是在讲述一个与该问题相关的故事,更是在向面试官展现自我。所以,不妨先想想每个故事都能体现出自己的哪些特性。
写在最后:
求职这条路,我也在一步一步摸索着前进。因此,我不保证你按照我的方式去做就不会出问题。你应该做的,是适当参考,并找到一条适合自己的道路。
我找工作时,在短期内遭受了许多大大小小的打击和否定。我会及时调整心态,做好准备面对接下来的挑战。所以,你也千万不要任由自己心态爆炸放任自流破罐子破摔。守得云开见月明。
最后祝你求职顺利~
相关链接:华为面试、阿里面试、百度一面、百度二面、百度三面。
(转载请注明,谢谢。)
网友评论
我感觉还真能高一点点。。。。
第一次阿里面试被让自我介绍我介绍两句就完了。。。然后面试官顿时不知所措起来。。。
后来习惯了基本自我介绍着就入话题了,最后感觉面试官没问什么难的问题。。