程序员面试宝典

目录·程序员面试宝典
·编辑推荐
·内容简介
·主要特点
·图书目录
·书摘



程序员面试宝典
  作 者: 欧立奇,刘洋,段韬 编著
  出 版 社: 电子工业出版社
  出版时间: 2008-11-1
  字 数: 526400
  版 次: 1
  页 数: 361
  开 本: 16开
  印 次: 1
  纸 张: 胶版纸
  I S B N : 9787121073793
  包 装: 平装
  所属分类: 图书 >> 自我实现/励志 >> 求职/面试
  定价:¥39.80
编辑推荐
  揭开知名IT企业面试、笔试的核心机密,传授程序员岗位求职的关键技巧、传递快乐工作的精神与态度。
  本书涉猎各大IT公司历年面试真题(包括笔试题、口试题、电话面试、英语面试,以及逻辑测试和智力测试),通过精确详细的分在,把在应聘程序员(含网络、测试等)过程中所遇见的常见考点为你一一点破。
内容简介
  作为刚毕业的学生和正在找工作的程序员,当你应聘一份程序设计、软件开发方面的工作时,招聘方总会安排一次笔试以考查你的程序设计能力。我们写作这本书的目的就是希望能帮助大家顺利地通过这类面试。
  程序设计面试,时间大约是一小时,试题范围包括计算机知识、程序设计、逻辑分析等。与传统的面试不同,程序设计面试题以程序设计题、IQ智力题及各种与计算机相关的技术性问题为主。我们收集了大量知名企业技术类笔试中的常见试题,深入浅出地对试题的解答思路进行了分析和指导,不仅能帮助求职者快速复习有关知识,也对如何给面试官留下一个良好而深刻的印象进行了指导。希望能把在技术面试中取得的宝贵经验毫无保留地传授给读者,以便使求职者对程序设计面试中的常见题型应付自如,从而获得一份真正的高薪工作!
  通过对本书的学习,读者能够掌握关键性的面试技巧,发现和完善有关试题的最佳解决方案,以应对不利的局面。读完本书,读者会了解负责招聘工作的HR主管对程序设计面试都有哪些想法,公司将依据怎样的标准评估应聘人员在程序设计面试中的表现,公司将出哪方面的题目来测试你,以及不同的公司在程序设计方面的侧重点有何不同。通过对书中代表性例题举一反三地钻研,相信读者无论以后遇见什么样的面试题目,都可以应对自如,在就业路上一帆风顺。
主要特点
  《程序员面试宝典》不同于同类书籍的主要特点是:
  • 细
  国外的面试书籍和中国国情不是很相符。中国的软件企业比较小,涉及的方面比较细、比较基础,比如常会考基础性编程的问题,如const、sizeof、类型转化等。一些国内公司(北大方正、北大青鸟等)的面试题,多半是浅显的基础的问询。换句话说就是,他们考得很细。本书把面试中国内公司最易考到的基础考点放在“第2部分C/C++程序设计”里面,希望能切切实实帮读者解决实际问题。
  • 专
  面试题是通过一道题考查一个专类的能力。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质。本书将考查的方面分类:嵌入式编程类,软件类,面向对象类,模板类……通过面试题目提升你对这些方面知识的掌握能力,以达到有的放矢、举一反三的效果。
  • 广
  求职者应聘的职位一般有3种:Bnet、Btest和Se,分别代表网络工程师、测试工程师和软件开发人员。市面上流行的面试书籍仅侧重第三类软件开发人员而忽略网络工程师和测试工程师。现实情况是诸如趋势科技、华为3COM、Cisco等公司对网络方面的考题日趋增加。本书就这一方面给出了详细论断,并结合大量考题分析题目特点,给出应试方案。
  此外,随着全球五百强企业进入中国大陆,外企对UML、设计模式、软件度量等方面试题的喜爱有增无减。本书在这些方面加以改进,以适应市场需求。
  • 新
  程序员面试或者说应届毕业生面试的题目年年翻新,岁岁不同。比如说现在很少有ASP和VB的面试例题,而新兴语言C#却成为面试热点。同时本书对时下流行的综合面试题、智力测试题、英语面试、电话面试加以分门别类,以大量实际案例总结应对面试的方案,以达到“一册在手,临危不乱”的效果。
  • 真
  本书的所有面试题都是近两年各大公司面试题的汇总,内容非常新,可以算做面试者求职前的一份全真模拟。我们希望营造一种真实的面试氛围,同时把如何写好简历及如何在面试过程中应答的实际感悟融汇在书中,指引读者走上理想的工作岗位。
  本书不是一本万能书籍,但却肯定是你工作求职的好助手和好伙伴!
图书目录
  第1部分 求职过程
  求职的过程就是一个提高和认识自我的过程,最后的成功根植于你本人一丝一毫的努力当中。也许真的像电影《肖申克的救赎》里面说的那样:“得救之道,就在其中。”
  第1章 应聘求职 3
  1.1 应聘渠道 3
  1.2 应聘流程 4
  第2章 简历书写 5
  2.1 简历注意事项 5
  2.2 简历模板 8
  第3章 3种考试 13
  3.1 笔试 13
  3.2 电话面试 15
  3.3 面试 16
  第4章 职业生涯发展规划 19
  4.1 缺乏工作经验的应届毕业生 19
  4.2 更换工作的程序员们 21
  第2部分 C/C++程序设计
  为什么要选择C系的语言呢?这是因为各大公司的编程语言绝大多数是C系的语言,虽然Java也占很大的比重,可是C++相对于Java来说更有区分度—C++是那种为每一个问题提供若干个答案的语言,远比Java灵活。
  第5章 程序设计基本概念 25
  作为一个求职者或应届毕业生,公司除了对你的项目经验有所问询之外,最好的考量办法就是你的基本功,包括你的编程风格,你对赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。
  5.1 赋值语句 25
  5.2 i++ 27
  5.3 编程风格 29
  5.4 类型转换 30
  5.5 螺旋队列 34
  5.6 a、b交换 35
  5.7 C和C++的关系 36
  5.8 程序设计其他问题 37
  第6章 预处理、const与sizeof 39
  6.1 宏定义 39
  6.2 const 41
  6.3 sizeof 42
  6.4 内联函数和宏定义 55
  第7章 指针与引用 57
  指针是C系语言的特色,是C和C++的精华所在,也是C和C++的一个十分重要的概念。
  7.1 指针基本问题 57
  7.2 传递动态内存 65
  7.3 函数指针 71
  7.4 指针数组和数组指针 73
  7.5 迷途指针 77
  7.6 指针和句柄 79
  第8章 循环、递归与概率 81
  8.1 递归基础知识 81
  8.2 典型递归问题 83
  8.3 打靶 84
  8.4 字符子串 89
  8.5 循环语言 91
  8.6 0-1背包 94
  8.7 概率 95
  第9章 STL模板与容器 97
  9.1 向量容器 98
  9.2 泛型编程 103
  9.3 模板 105
  第10章 面向对象 109
  有这样一句话:“编程是在计算机中反映世界”,我觉得再贴切不过。面向对象(Object-Oriented)对这种说法的体现也是最优秀的。
  10.1 面向对象的基本概念 110
  10.2 类和结构 111
  10.3 成员变量 113
  10.4 构造函数和析构函数 117
  10.5 拷贝构造函数和赋值函数 119
  10.6 多态的概念 123
  第11章 继承与接口 127
  整个C++程序设计全面围绕面向对象的方式进行。类的继承特性是C++的一个非常重要的机制。这一章的内容是C++面向对象程序设计的关键。
  11.1 覆盖 128
  11.2 私有继承 130
  11.3 虚函数继承和虚继承 137
  11.4 多重继承 141
  11.5 检测并修改不适合的继承 142
  11.6 纯虚函数 146
  11.7 COM 148
  第12章 位运算与嵌入式编程 151
  12.1 位制转换 151
  12.2 嵌入式编程 157
  第3部分 数据结构和设计模式
  随着外企研发机构大量内迁我国,在外企的面试中,软件工程的知识,包括设计模式、UML、敏捷软件开发,以及.NET技术和完全面向对象语言C#的面试题目将会有增无减。
  第13章 数据结构基础 167
  面试时间一般有2小时,其中至少有约20~30分钟是用来回答数据结构相关问题的。链表、数组的排序和逆置是必考的内容之一。
  13.1 单链表 167
  13.2 双链表 173
  13.3 循环链表 176
  13.4 队列 177
  13.5 堆栈 180
  13.6 树 185
  13.7 排序 185
  第14章 字符串 203
  14.1 整数字符串转化 203
  14.2 字符数组和strcpy 205
  14.3 数组越界 210
  14.4 数字流和数组声明 212
  14.5 字符串其他问题 213
  第15章 设计模式 219
  “地上本没有路,走的人多了也就成了路”。设计模式如同此理,它是经验的传承,并非体系。它是被前人发现,经过总结形成的一套某一类问题的一般性解决方案,而不是被设计出来的定性规则。
  15.1 设计模式 220
  15.2 软件工程 235
  15.3 C#基础 237
  15.4 C#继承 240
  15.5 C#委托 249
  15.6 ASP.NET 251
  第4部分 操作系统、数据库和网络
  本部分主要介绍求职面试过程中出现的第三个重要的板块—操作系统、数据库和网络知识。这些内容虽不是面试题目中的主流,但仍然具有重要的意义。
  第16章 操作系统 257
  16.1 进程 257
  16.2 图形学 259
  16.3 内存管理 261
  16.4 DOS、Linux、UNIX 271
  第17章 数据库与SQL语言 273
  17.1 数据库理论 273
  17.2 SQL语言 276
  17.3 SQL语言客观题 279
  17.4 SQL语言主观题 282
  第18章 计算机网络及分布式系统 285
  18.1 网络结构 285
  18.2 TCP/IP 288
  18.3 SNMP 292
  18.4 网络其他问题 295
  第5部分 综合面试题
  英语面试、电话面试和智力测试,是除技术面试之外的另三大模块。本部分教你如何精心地为这些内容做好准备,以让你在整个面试过程中的表现更加完美。
  第19章 英语面试 301
  这里的英语面试不同于普通的英语面试。就一个程序员而言,最好能够做到用英文流利地介绍自己的求职经历,这是进外企非常重要的一步。有些问题即便是中文你都很难回答,更何况是用英文去回答。但是求职过程本身就是一个准备的过程,精心地准备等待机会,机会总是垂青于那些精心准备的人。
  19.1 面试过程和技巧 301
  19.2 关于工作(About Job) 303
  19.3 关于个人(About Person) 308
  19.4 关于未来(About Future) 311
  19.5 其他建议(Other Tips) 312
  19.6 英文面试常用词汇 313
  19.6.1 工作经历相关词汇 313
  19.6.2 个人资料相关词汇 314
  19.6.3 个人品质相关词汇 315
  19.6.4 学历相关词汇 316
  19.6.5 离职原因相关词汇 318
  第20章 电话面试 319
  20.1 电话面试之前的准备工作 319
  20.2 电话面试交流常见问题 320
  第21章 智力测试 329
  智力测试是企业招聘时有可能出现的一个环节,事实上,IT企业求职招聘还是主要以基本的程序设计及数据结构为主。智力测试是考验人的综合智商、逻辑能力的过程,本身是很难复习和准备的。这些年来,智力测试的一个新的趋势是和编程及算法结合起来。
  21.1 关于数字的智力测试 329
  21.2 关于推理的智力测试 332
  21.3 关于时间的智力测试 333
  附录A 简历模板 339
  附录B 面试经历总结 351
书摘
  样张:
  8.4【螺旋队列问题】
  面试例题1:
  21 22................
  20 7 8 9 10
  19 6 1 2 11
  18 5 4 3 12
  17 16 15 14 13
  看清以上数字排列的规律,设1点的坐标是(0,0),x方向向右为正,y方向向下为正.例如:7的坐标为(-1,-1) ,2的坐标为(0,1),3的坐标为(1,1).编程实现输入任意一点坐标(x,y),输出所对应的数字。[芬兰著名软件公司面试题,2005]
  解析:规律能看出来,问题就在于如何利用它。很明显这个队列是顺时针螺旋向外扩展的,我们可以把它看成一层一层往外延伸。第 0 层规定为中间的那个 1,第 1 层为 2 到 9,第 2 层为 10 到 25,注意到 1、9、25、……不就是平方数吗?而且是连续奇数(1、3、5、……)的平方数。这些数还跟层数相关,推算一下就可以知道第 t 层之内一共有 (2t-1)^2 个数,因而第 t 层会从 [(2t-1)^2] + 1 开始继续往外螺旋。给定坐标 (x,y),如何知道该点处于第几层?层数 t = max(|x|,|y|)。
  知道了层数,接下来就好办多了,这时我们就知道所求的那点一定在第 t 层这个圈上,顺着往下数就是了。要注意的就是螺旋队列数值增长方向和坐标轴正方向并不一定相同。我们可以分成四种情况——上、下、左、右——或者——东、南、西、北,分别处于四条边上来分析。
  东|右:x == t,队列增长方向和 y 轴一致,正东方向(y = 0)数值为 (2t-1)^2 + t,所以 v = (2t-1)^2 + t + y
  南|下:y == t,队列增长方向和 x 轴相反,正南方向(x = 0)数值为 (2t-1)^2 + 3t,所以 v = (2t-1)^2 + 3t - x
  西|左:x == -t,队列增长方向和 y 轴相反,正西方向(y = 0)数值为 (2t-1)^2 + 5t,所以 v = (2t-1)^2 + 5t - y
  北|上:y == -t,队列增长方向和 x 轴一致,正北方向(x = 0)数值为 (2t-1)^2 + 7t,所以 v = (2t-1)^2 + 7t + x
  其实还有一点很重要,不然会有问题。其它三条边都还好,但是在东边(右边)那条线上,队列增加不完全符合公式!注意到东北角(右上角)是本层的最后一个数,再往下却是本层的第一个数,那当然不满足东线公式啊。所以我们把东线的判断放在最后(其实只需要放在北线之后就可以),这样一来,东北角那点始终会被认为是北线上的点。
  答案:代码如下:
  #include <stdio.h>
  #define max(a,b) ((a)<(b)?(b):(a))
  #define abs(a) ((a)>0?(a):-(a))
  int foo(int x, int y)
  {
  int t = max(abs(x), abs(y));
  int u = t + t;
  int v = u - 1;
  v = v * v + u;
  if (x == -t)
  v += u + t - y;
  else if (y == -t)
  v += 3 * u + x - t;
  else if (y == t )
  v += t - x;
  else
  v += y - t;
  return v;
  }
  int main()
  {
  int x, y;
  for (y=-4;y<=4;y++)
  {
  for (x=-4;x<=4;x++)
  printf("%5d", foo(x, y));
  printf("\n");
  }
  while(scanf("%d%d", &x, &y)==2)
  printf("%d\n", foo(x, y));
  return 0;
  }
  17.4【关于临界问题】
  面试例题2:有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。[中国著名通讯企业H公司面试题,2008年]
  解析:设总共楼层为 h
  a(n)(如a(1) ,a(2)...)表示每一次抛所在的层次。
  则对于任一次抛掷an,必须沿着上一次所抛得层之上逐个尝试 既最多必须抛掷 a(n) - a(n-1) - 1 + n次
  依此类推,考虑平均值,将各次求和,消去之后得到
  (a(n) - n + (1+n)*n/2) / n 由于 a(n) = h
  所以等式化为 h/n + n/2 + 1/2
  其最小值发生于 n = (h*2)^(1/2)的时候
  代入 h = 100
  得到 n 约等于 14
  及最坏情况下,约需14次完成。
  答案:最多14次。
  从14层开始扔第一次,如果碎了,那么从第2层开始扔,一层层加,直到13层。一共14次。
  如果没有碎。27层再扔一次。依次推理,从15层到26层一共12次。加上前面的14层,27层2次所以说也是14次。
  依次这样扔
  14
  14+13=27
  27+12=39
  39+11=50
  50+10=60
  60+9=69
  69+8=77
  77+7=84
  84+6=90
  90+5=95
  96
  97
  98
  99
  最多14次
  算法如下:
  #include <iostream>
  using namespace std;
  int kk[5];
  int fmin2[101];
  int fmax2[101][101];
  int f(int n);
  int main()
  {
  memset(fmin2,101,sizeof(fmin2));
  memset(fmax2,0,sizeof(fmax2));
  fmin2[0] = 0;
  fmin2[1] = 1;
  cout <<"100 floor: " << f(100) << endl;
  return 0;
  }
  int f(int n)
  {
  if(fmin2[n] < 101) return fmin2[n];
  for(int i = 1; i <= n; i++)
  {
  int d = f(n-i) ;
  fmax2[n] = (i-1) > d ? (i-1) : d;
  }
  int min = 101;
  for(int i = 1; i <= n; i++)
  {
  min = min < fmax2[n] ? min : fmax2[n];
  }
  fmin2[n] = 1 + min;
  return 1 + min;
  }
  (感觉答案还是有点问题的:)
  如果一次15层的话,最后的期望值是13.75 = (15/2 + 90/15) * (9/10) + (90/15 + 10) * (1/10)
  如果一次14层的话,最后的期望值是13.9 = (14/2 + 98/14) * (98/100) + (98/14 + 2) * (2/100)
  21.5【关于群体面试】
  面试例题3:如果唐僧去西天取经,可以带八个人去,李魁,孔子,瓦特,林黛玉,郑和,武则天,牛顿,李白,请你把这八个人按照你的想带的意愿从强到弱排个序,并解释为什么这么排序。[中国著名互联网企业W公司群体面试题,2008年]
  解析:群面主要是考验团队配合、领导力等非技术素质。所以群面的题目一般都是有分歧的,没有标准答案,每个答案只要自己把理由列充分就能自圆其说。 群面关键看是否能自圆其说,和其他成员的合作与沟通方面的东西。下面的答案仅供参考。
  答案:
  第一,选郑和,理由:郑和有丰富的远行经验,曾指挥数千上万人,及若干船队.还有他与途经各国打交道的优势.即一项任务的总指挥;
  第二,选李魁,理由:西行,路途艰险,无数突发情况,需要武力的保障,没有武力作为坚强保障,什么也干不了。
  第三,选武则天,武则天的生平:普通女子,普通才人,被太宗宠爱,太宗死后成尼姑,用计勾引高宗,变成宫里的贵人,用计谋清除异已,成为皇后,最后强势成帝。在这角色变化中,她应付皇宫里的勾心斗角,人际关系,处理得当,综合能力实属强大。
  第四,选牛顿,物理学家,可以运用科学知识为西行中所碰到的问题解决.简单说就是用理论指导实践,例如,简单的物理知识,水的浮力,还有力的运用等等
  第五选瓦特,与牛顿类似,但略逊牛顿.没有足够条件给这位先生去发明,改善,运用他的发明。
  第六选孔子,伦理道德,之乎者也,有理但也拘泥于礼法.对任务的执行,总体起阻碍作用
  第七选李白,一介书生,空有文采,对任务执行无太大用处,但缺点明显,如只会抱怨,感叹怀才不遇,起阻碍作用。
  第八,选林妹妹,特点是哭,还有体力弱。哭,会影响团体情绪,体力弱,影响队伍行进的速度,搞不好还要别人背她。起阻碍作用。
  从排序上,即 1.指挥决策;2.武力保障;3.公关能力;4.科学知识;5.科学技术,6.礼法拘束,7.浪漫消极,8.哭泣体弱。
  前五名是从对任务的执行起到正作用的,后三名起的是负作用。其实执行一项任务,挑选需要的人,为任务的完成来服务。每个人物都有优点缺点,但是为了完成西天取经的任务,只能选择最合适的人选了。

自定义分类:
计算机书籍面试程序员
 
贡献者:
风元素
Copyright © 1999-2024 C114 All Rights Reserved | 联系我们 | 沪ICP备12002291号-4