Contents
技巧 1 BAT 等企业如何面试 ��������������������������������������������������� 1
1. 面试流程及问题解析 .....................................................................................................1
2. 面试时的基本礼仪及着装 .............................................................................................7
技巧 2 你的职场生涯可以这样来规划 ����������������������������������������� 9
1. 缺乏工作经验的应届毕业生 .........................................................................................9
2. 更换工作的程序员 ....................................................................................................... 11
3. 快乐地工作 ...................................................................................................................12
技巧 3 66 道面试题让你轻松拿到 Offer ����������������������������������� 13
1. 程序设计基本概念 .......................................................................................................13
2. 指针与引用 ...................................................................................................................16
3. 面向对象 .......................................................................................................................20
4. 继承与接口 ...................................................................................................................22
5. 树、图、哈希表 ...........................................................................................................26
6. 字符串 ...........................................................................................................................27
7. 软件测试 .......................................................................................................................32
8. 操作系统 .......................................................................................................................33
9. 数据库与 SQL 语言 .....................................................................................................37
10. 计算机网络及分布式系统 .........................................................................................38
11. 网络协议 .....................................................................................................................40
12. 网络安全 .....................................................................................................................41
13. 英语面试 .....................................................................................................................42
目录
技巧 1 BAT 等企业如何面试
1. 面试流程及问题解析
无论是程序员还是其他职业的面试,虽然都是提交简历、电话面试、面谈、
拿到 Offer 等这一系列过程,但是每一步都很重要!首先简历要精炼、漂亮、
大方,尽量突出自己的优势,避开自己的劣势。电话面试还好,因为不用面
对面交谈,这样可以更好地把握自己的语言。面谈是最关键的一步,准备不
充分就会紧张,一紧张就容易出错。不过很多面试官都可以接受面试者的紧
张,只要不太过分,问题就不大。一般来说中大型企业有很多轮的面试,就
拿微软来说,官方渠道需要 12 轮面试,即使内部推荐也需要 4 轮,而且只
要有一个面试官说你不行,你就没戏了。搞定面试官有很多方法,但是最重
要的一条就是:面试官也是人,所以要以最短的时间,在他 / 她了解你之前——
了解他 / 她,并合乎时宜地与他 / 她展开对话。最后就是要用平常心去面对,
千万不要执着于某个职位,这有可能会令你失态导致失败,而平常心有时反
倒会有意想不到的效果。
(一)简历
据统计,80% 的简历都是不合格的。不少企业的人事管理者抱怨很多简
历的格式很糟糕。那么如何写好一份简历呢?
首先,简历的总篇幅要控制在 2 页左右,如下图所示。
1
技巧1 BAT等企业如何面试
太长的简历反而会淹没一些有价值的闪光点,但也不要为了减少篇幅而
字体到影响阅读的程度。
其次,简历一定要真实客观,按照实际情况填写,不要填写任何虚假内容,
否则即使侥幸通过筛选,面试时也会露出马脚的,对以后的职业生涯也会有
很严重的影响。
另外,不要过分谦虚。简历上注明你的求职岗位,要根据该岗位的要求,
有侧重地描述自己。
最后,在文字、排版、格式上不要出现错误,一份干净整洁的简历是对
面试企业最起码的尊重。如果应聘外资企业或跨国公司,则一定要认真对待
英文简历的编写,因为它会体现你的实际英文水平。
下面是英文简历模板的链接。
(二)笔试
笔试是非常关键的一个环节,不论你有多大的才干和多么广博的知识,
如果未能通过笔试,则无缘下面的面试。
目前几乎所有的 IT 公司都是以 C/C++ 或 Java 为主进行笔试,外企的话
还要求具备一定的英语基础。编程语言本身并没有高低之分,但相对来说,
考到 Delphi 或者 VB 的可能性很小。作为应届毕业生,如果只学过 VB、
VF,而对 C 系语言不熟的话,在笔试中就会很吃亏。下面是一些阿里巴巴
B2B 第一阶段面试题目。
题目 1 两个二进制数的异或结果是多少?
题目 2 递归函数最终会结束,那么这个函数一定(不定项选择题):
A. 使用了局部变量
B. 有一个分支不调用自身
C. 使用了全局变量或者使用了一个或多个参数
题目 3 以下函数的结果是什么?
Int cal(int x)
{
if(x==0)
return 0;
else
return x+cal(x-1);
}
2
程序员面试手册
题目 4 以下程序的结果是什么?
Void foo(int*a,int* b)
{
*a = *a+*b
*b = *a-*b
*a = *a-*b
}
Void main()
{
int a=1, b=2, c=3
foo(&a,&b);
foo(&b,&c)
foo(&c,&a)
printf("%d,%d,%d",a,b,c);
}
题目 5 下面哪项不是链表相对于数组的特点?
A 方便删除
B 方便插入
C 长度可变
D 储存空间小
题目 6 T(n)=25T(n/5)+n^2 的时间复杂程度是什么?
题目 7 n 个顶点、m 条边的全连通图,至少去掉几条边才能构成一个树?
题目 8 正则表达式(01;10;1001;0110)* 与下列哪个表达式一样?
1.(0;1)*
2.(01;01)*
3.(01;10)*
4.(11;01)*
5.(01;1)*
题目 9 如何减少换页错误?
A 进程倾向于占用 CPU
B 访问局部性(locality of reference)满足进程要求
C 进程倾向于占用 I/O
D 使用基于最短剩余时间(shortest remaining time)的调度机制
E 减少页大小
3
技巧1 BAT等企业如何面试
题目 10 实现 N*N 矩阵的乘法,矩阵由一维数组表示。
题目 11 找到单向链表中间那个元素,如果有两个则取前面一个。
题目 12 有长度为 n 的整数数组,找出其中任意(n-1)个乘积最大的
那一组,只能用乘法,不能用除法。要求对算法的时间复杂度和空间复杂度
做出分析,不要求写程序。
从上述笔试题来看,题目本身都不是太难。对于企业而言,不管是阿里
还是微软,招聘者都只是 HR 而不是神仙,不要把题目想得太神秘了。但是
也不要太轻敌,事先要了解面试的公司,并根据情况做好相应的准备。
(三)电话面试
电话面试,一般是面试者提交简历后,面试开始的第一步,由公司 HR
负责,主要是对简历上一些模糊信息的确认、对应聘职位简单技术问题的提
问,以及对英文能力的考察。
电话面试之前要调整好电话,保证通话质量,以及电话的畅通。
电话面试常见的问题如下。
面试例题 1:请你介绍一下自己。
这个问题需要选择重点来回答,至于什么时候上的小学、什么时候初中
毕业就不用讲了。你可以这么说:
A:我是某某大学毕业的,我的成绩优异。我的研究方向是计算机软件
与理论。我的本科教育给了我宽广的视野,我涉猎的课程有英语、网络和程
序设计。我对编程方面有很深的了解。以及可以说说你的业余爱好。
面试例题 2:你最大的弱点是什么?
这个问题需要正面来回答,每个人都有弱点,最佳策略是承认你的弱点,
但同时要表明你在予以克服,并有克服弱点的能力和计划。可能的话,也可
以说一项会给公司带来好处的弱点,例如“我是一个很执着的人,一件微不
足道的小事也要把它做到完美”。对于一个应届毕业生而言,缺乏工作经验
这种不是很大的弱点,你也可以说出来。
A:我缺乏工作经验,但是我正在学习。
B:我缺乏远见。但是我可以多读书。
C:我只是刚毕业。
面试例题 3:你对本公司的情况了解吗?
A:了解一点。正如你刚才所提到的那样,贵公司是一家美资公司。据
4
程序员面试手册
我所知,×× 公司是一家世界闻名的生产数据库产品和应用软件的公司。
你们的产品×××和美国某数据库公司数据库都深受世界各地用户的欢迎。
面试例题 4:在你的项目中用到了哪种程序?在此过程中你学到了什么?
A:基于 ASP.NET 和 SQL 2000 平台基础,我们完成了 ×× 大学网络
选课系统。学校中的每个人都可以在网上选择、取消、查询课程。这个项目
是一个 B/S 结构系统;代码是用 C# 编写的,在 .NET 平台上运行。在项目中,
我使用 ADO 接口来支持数据库程序。在此之后,我参加了对整个系统的测试。
为了实现后台数据库,我进行了数据库的设计,包括主键、外键的设计、
链接、视图及其他,并运用 SQL 语句实现数据的查找、删除和修改。其中
虽然遇到了大量的困难,但我尽我所能地去克服了它们,最终获得了提升和
自我的丰富。
面试例题 5:你如何理解你所应聘的职位?你未来几年的规划是什么?
A: 我应聘的是 QA 职位,QA 意味着质量保证。我们应该很好地与研发部
门交流。我计划对项目的结构做深入的了解,与我的同事们很好地合作。希
望能充分展示我在这个行业的能力和智慧。
B: 也许有机会,我将会从事管理工作。我在上一个工作中积累了一些行
政经验,我将来也许会运用我组织和计划上的经验和技巧来完成工作。
面试例题 6:在你眼中,管理者是什么样的?
A: 项目管理者是那种负责项目从概念到实施整个过程的计划、协调、控
制的人或公司,他(们)能满足项目的需求,并确保项目在有限的成本内按
时完成,达到要求的质量标准。
B: 项目管理者是一个策划者、协调者和领导者,是研发人员的好朋友,
也是项目流程的报告者。
面试例题 7:你目前所在的公司,有什么吸引你的地方吗?
不要说“没有,我讨厌现在的公司”。可以选择说一说目前公司和所申
请公司共同的优点。
如果这是你的第一份工作,你可以谈谈在学习或实习期间喜欢什么。
面试例题 8:你理想的工作环境是什么?
A:我喜欢在一个和谐的环境中工作。每个人尽最大的努力为公司做事,
完成一份工作后我们会得到满足和成就感,我的努力能够得到公司的嘉许。
5
技巧1 BAT等企业如何面试
作为公司的一员我能从他人身上受益,我也会令他人受益。
面试例题 9:你觉得要获得职业上的成功需要具备什么样的特质及能力?
A:首先,要有极强的爱好,以及扎实、广泛、艺术性的教育为背景,
特别是在技术为主导的职业领域中。 这些基本条件,加上对学习的热爱、
解决问题的能力、广泛的兴趣、成功与求胜的决心、很强的沟通技巧、努力
工作的能力,都是能够帮助我在职业生涯中取得成功的重要品质。如今新技
术不断取代旧的技术,为了成功我们要成为能跟上步伐的快速学习者,否则
你将被他人击倒。所有的优点联合起来,塑造成一个能在不断变换的信息社
会中生存的坚实团队中的一员。我相信我拥有的品质,我有信心成为贵公司
成功团队中的一员。
面试例题 10:你的同事或同学是怎么描述你的?
你可以通过这个问题来向面试官展示你的社交意识,可以说通过与同事或
同学的交流协作,你了解到了自己在别人眼中的样子。
同时,你可以用这个问题来表明你有自我认知感。你知道自己的长处和
短处,以及你的长处或短处能给团队带来什么。
诚实回答,不要过度自嘲。
面试例题 11:你有什么问题要问我吗?
如果你对公司已经提前了解,并且做足了功课,可以提问与你职位相关
的问题。例如,这个职位承担的职能,以及公司这个职位还有哪些期望等。
彰显你对这一职位的认识,且具有积极进取的心态。
另外,如果你对公司晋升和薪酬机制不太清楚,尽量不要直接问工资、
社保、五险一金等具体问题,尤其不要向非 HR 面试官问这类问题,可以侧
面询问这个职位的成长线、薪酬与成长的匹配关系、薪酬策略是标杆型还是
追赶型(市场分位)、自己怎么努力才能加快成长?
如果你对企业文化有所了解,可以问如果我有幸加入这个团队,我如何
尊崇公司的文化、更好地融入团队等这类开放性的问题。一方面显示你愿意
融入文化,有团队意识;另一方面也给面试官一次“谆谆教导你”的机会。
这类问题,任何面试官都可以回答你,并且会讲得头头是道,你频频点头就
可以了。面试官讲得越嗨,给你加分的可能性就越大。
(四)面试
对于求职者而言,面试是重要的环节,一定要守时。如果不能按时参加
6
程序员面试手册