概述
每年毕业生找工作都是一个问题,对于个人来说,无非就是笔试和面试的问题。对于应届生来说,最头疼的或许不是笔试而是面试。对于笔试,只要自身实力过硬,一般都没有问题(退一步讲,万一笔试没过,还可以在面试的时候霸面);对于面试,就不一样了,应届生没有接触过面试,所以对于面试可能有些害怕,面试之前会在网上搜一些面试注意事项之类的,而这些都是对所有面试的一般概括,没有什么针对性,无非就是提醒面试者注意着装、礼貌、准备一些各种版本的自我介绍之类的,不得不说这些还是有很大帮助的。但在我看来,这些都没有自己实打实的来一次真正的面试有帮助。所以,我鼓励那些想要找工作的同学,可以尝试着真的去准备一场面试,运气好的话,说不定就被录取了呢。下面,我分享一下我的今年(2015年)的面试经历和感想,希望对一些同学有所帮助。
对于面试的着装,技术类的面试,穿平常的便装就行,不用穿的特别正式,穿的正式反而显得不自然,而且在面试官看来也多少会有几分怪异。非技术类的,具体应该也没有什么特别的标准,如果自己之前有正式的西装之类的衣服,可以穿上去面试,如果没有,感觉也没有必要去准备一下,穿自己平常的衣服应该也不会有多大的问题。这纯属个人见解,可以根据实际的情况,询问学长之类的,应该都会得到满意的解答。
一般来说,公司会通知你在特定的时间地点面试,我们最好提前15到30分钟到达指定的地点(有的会明确要求你提前15分钟到达)。之前在网上看到有说让提前5到10分钟左右,如果提前半个小时去,可能会被公司视为没有时间观念,根据我个人的面试经历,这完全就是扯淡,去公司面试的人那么多,根本不会有人注意到你的,更别说什么看出来一个人的时间观念了;况且,面试官面试时间会在某个范围内波动,遇到你前面的人没来面试,你提前被面试的可能性不是没有;另外,如果太赶的话,很容易造成紧张情绪,面试的时候发挥不好,提前去的话,还可以和其他人交流一下,缓解一下紧张情绪,如果是多个人一块儿去,边等边聊天,基本上也不会有什么紧张的情绪。
另外需要注意的就是个人礼仪等方面的问题,不过,对于一个有基本素质的人,这应该都不是问题,只要稍微注意下就ok了。
最后,面试的时候一定要带上自己的简历,一般来说面试都是三面(不排除更多次面试的可能,貌似这些都是大牛,是要给他们加工资的),带上三份或者更多的简历保证万无一失,如果不带,可以想象面试官要求你给他一份简历你却没有的尴尬情景;最好还有带上纸和笔,技术面试,少不了要在纸上写程序之类的,如果面试官没提供纸,或者提供的纸用完了,那么我们自己带的就派上用场了。
以上这些,个人感觉只要面试的时候稍稍注意一些,都不是问题,毕竟一个公司招聘人才,主要考察的是个人的专业能力,其他方面,只要不是做的太差,都不会有什么问题。
下面,我先来说一下腾讯的面试经历。腾讯我总共面试了三次,一面和二面是技术面,三面是HR面。可能是我个人简历和自我介绍的问题,一面和二面都是面试官在一张纸上指出一些题让写代码或者说思路,没有问我项目或者其他具体的技术问题;HR面基本就是聊天,了解一下你的个人情况之类的,一般来说,技术类的HR是不会刷人的,但也不排除后边的人比你优秀之类的,然后,你就被悲催的刷掉了。
先说一面,一面大学持续了40分钟,刚开始先是自我介绍,我大概说了有三分钟,主要说了ACM的经历,学过linux,写过后台小程序,重点介绍的是ACM的经历,可能是这个原因,面试官上来就让我写程序,问了两个题目。
第一道题目是将字符串”I am student”变成”student am I”,要求尽量节省内存。当时我看道题目后,大致看了一下,就开始写了,也没仔细看题,就写了一个字符串翻转的函数,给面试官看了,面试官明确说错了,我当时就懵了,心想这下完了,但是,我还是静下心来看哪里错了,我看了一遍程序,感觉是没错的,就又再看了一遍题目,立刻就明白了,md,原来题目看错了,当时就给我自己跪了。然后,我就又开始写,写的时候,询问了下面试官,分割单词的空格是不是只有一个,他和我说你可以只考虑一个的情况,然后问我,如果有多个空格怎么处理,我就说可以先做一次预处理,将多个空格变成一个空格。然后,我就开始写了,这次的思路是从字符串的后边往前找空格,找到空格后,将空格替换成’ ’,用printf函数打印空格后紧邻的那个字符串,一直处理到字符串开头;面试官看的过程中,我开始说思路,说好后,面试官说,不是让打印出来,是让在原来字符串的基础上将字符串改变成这个样子;说完之后,我就开始不淡定了,但是还得想呀,想了一会儿,我感觉写程序时间可能不够用,我就和面试官说,可不可以说思路,他说可以,我就说可以使用循环移位,我想的时候,想的是循环左移,说的时候突然想到循环右移的效率更高一点,这时面试官可能不太理解,就让我画了一个示意图,标明循环右移后额结果,面试官大概明白后,就和我说,你这个想法的时间复杂度有点高呀,我说是的,复杂度是O(n^2),然后,他让我想想有没有时间复杂度低而且还节省内存的方法,我想的过程中,面试官上了个厕所,回来就问我想出来了没,我说没有,然后,就又指了一道题目让我想;其实,当时我差点就问他,有没有既快又省内存的方法,不过,我是忍着没问,后来,面试完后,我查了一下,还真有,方法真是巧妙,先将字符串中的单词(以空格为分隔符)翻转一次,然后,再以整个字符串为单位翻转一次,就得到了结果;当时就被这种方法惊呆了,太特么妙了。这里附带说下,前几天做360的笔试题目,最后写代码的题目就是这个题,不过是以’.’为分隔符。代码贴到下面:
#include <string.h>
#include <stdio.h>
// 实现字符串相应范围翻转
void reverse(char *begin, char *end)
{
while (begin < end) {
char c = *begin;
*begin = *end;
*end = c;
++begin;
--end;
}
}
// 翻转两次,第一次以整个字符串为单位翻转,第二次以点分割的单词为单位翻转
char *str_rev(char *str)
{
char *begin = str;
int len = strlen(str);
char *p;
reverse(begin, begin + len - 1);
while (*p != '