http://www.csdn.net/article/2013-05-09/2815198-programmer-interview

摘要:本文从IT人员的角度,一起分享面试道路上的坎坷。文章汇集几个知名公司的面试题,从出题的角度到分析问题的方法到解决问题较为全面的讲解面试题目,以供读者参考。

面试是职场的永恒话题,如何在职场面试中脱颖而出,获得心仪职位?这里搜集了关于面试经验的热文,其中汇集了阿里巴巴、百度、微软几个知名公司的面试题以及部分答题方法、技巧、面试的心得体会,供读者参考。
[1] 教你如何迅速秒杀掉:99%的海量数据处理面试题

本文分成两部分。第一部分、从set/map谈到hashtable/hash_map/hash_set,简要介绍下set/map/multiset/multimap,及hash_set/hash_map/hash_multiset/hash_multimap之区别(万丈高楼平地起,基础最重要),而本文第二部分,则针对上述那6种方法模式结合对应的海量数据处理面试题分别具体阐述。

[2] 百度最新面试题集锦

最新的面试题集有时也代表公司近来的研发方向甚至科研趋势,这里,博主收集了一些百度最新的面试题集,其中有较为有趣的试题,

比如:
蚂蚁爬杆问题:
有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,他们只会朝前走或掉头,但不会后退,当两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。求所有蚂蚁都离开木杆的最小时间和最大时间。
答案:
两只蚂蚁相遇后,各自掉头朝相反方向走。如果我们不考虑每个蚂蚁的具体身份,这和 两只蚂蚁相遇后,打个招呼继续向前走没有什么区别。
所有蚂蚁都离开木杆的最小时间为
max(min(3,27-3),min(7,27-7), min(11,27-11), min(17,27-17),min(23,27-23))=11
所有蚂蚁都离开木杆的最大时间为
max(max(3,27-3),max(7,27-7), max(11,27-11), max(17,27-17),max(23,27-23))=24

三个警察和三个囚徒的过河问题:
三个警察和三个囚徒共同旅行。一条河挡住了去路,河边有一条船,但是每次只能载2人。存在如下的危险:无论在河的哪边,当囚徒人数多于警察的人数时,将有警察被囚徒杀死。问题:请问如何确定渡河方案,才能保证6人安全无损的过河。
答案:
第一次:两囚徒同过,回一囚徒
第二次:两囚徒同过,回一囚徒
第三次:两警察同过,回一囚徒一警察(此时对岸还剩下一囚徒一警察,是安全状态)
第四次:两警察同过,回一囚徒(此时对岸有3个警察,是安全状态)
[3] 阿里巴巴的面试

博主在文中指出,进入技术面试之前,先要做一套相应的试题,这里面涉及到平常不怎么注意的问题:
一是没有定义访问范围的构造函数,前面未加public、protected或private限制等,默认protected,编译会报错;

二是页面中定义两个同名的JS函数,调用会是什么结果,后面尝试了一下不报错,会调用第二个方法;
[4]苹果面试8大难题及答案

苹果这样的公司通常会在面试过程中向求职者抛出一些逻辑的问题来考研面试者,所以,如果你对进入苹果感兴趣,或者只是对逻辑问题感兴趣,这些面试难题值得你仔细研究。

比如:
“逻辑学家们围成一圈坐着,他们的额头上面画有数字……”又来一个逻辑学家围成一圈的问题,这次是这样的,三个拥有完美逻辑推理能力的人围成一圈坐在一个房间里,每个人的额头上都画着一个大于0的数字,三个人的数字各不相同,每个人都看得见其他两个人的数字,看不见自己的。
这三个数字的情况是,其中一个数字是其他两个数字的和,已知的情况还有,其中一个逻辑学家的数字是20,一个是30。游戏组织者从这三个逻辑学家后面走过,并问三个人各自额头上的数字是什么。但第一轮每个逻辑学家都回答他们无法推测自己的数字是什么。游戏组织者只好进行第二轮的发问,这是为什么?你能据此猜出三个逻辑学家的数字吗?

[5]12个有趣的C语言面试题

12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存等内容,比如:
内存泄露:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.  #include<stdio.h>
2.  
3.  void func(void)
4.  {
5.      printf("\n Cleanup function called \n");
6.      return;
7.  }
8.  
9.  int main(void)
10. {
11.     int i = 0;
12. 
13.     atexit(func);
14. 
15.     for(;i<0xffffff;i++);
16. 
17.     _exit(0);
18. }

这是因为_exit()函数的使用,该函数并没有调用atexit()等函数清理。如果使用atexit()就应当使用exit()或者“return”与之相配合。

[6]Java程序员面试中的多线程问题

这篇文章收集了 Java 线程方面一些典型的问题,

比如:
为什么需要 run ()和 start ()方法,我们可以只用 run ()方法来完成任务吗?
我们需要 run ()&start ()这两个方法是因为 JVM 创建一个单独的线程不同于普通方法的调用,所以这项工作由线程的 start 方法来完成,start 由本地方法实现,需要显示地被调用,使用这俩个方法的另外一个好处是任何一个对象都可以作为线程运行,只要实现了 Runnable 接口,这就避免因继承了 Thread 类而造成的 Java 的多继承问题。

[7]设计模式大集锦 程序员面试全攻略

无论你是参与Java面试还是C#面试,设计模式和软件设计问题在程序员面试中是必不可少的一部分。本文总结了在各种面试过程中经常被提及的一些设计问题。文中分为两部分,一类为初学者,另一类专为中高级技术人员准备。

[8]如何在面试时写出高质量的代码

如何在面试时能写出高质量的代码,是很多程序员关心的问题。作者总结自己多年面试他人以及被他人面试的经验,发现应聘者可以从代码的规范性、完整性和鲁棒性三个方面提高代码的质量。

[9]编程技术面试的五大要点

编程面试是程序员面试过程中最为重要的一个环节,其中主要关注应聘者五种素质:

(1)扎实的基础知识

(2)能写高质量的代码

(3)分析问题时思路清晰

(4)能优化时间效率和空间效率

(5)具备包括学习能力、沟通能力、发散思维能力等在内的综合能力。

[10] 谈谈对于技术面试的心得体验

博主在文中谈到,一个公司的技术面试需要有良好的经验传承,不光光只是留来一些题库;也不光光是一句要相互尊重,你代表公司的形象;更重要的如何去主导一场面试,全面、准确的了解对方的能力。一般情况下,软件公司招人总会对这三个方面的能力做一下考核,一是编程语言,二是数据结构与算法,三是系统设计。

延伸阅读: 编程技术面试的五大要点

华为的JAVA面试题及答案(部分)

IT求职经验总结——面试和准备策略