当前位置:网站首页 > 技术博客 > 正文

java面试宝典(Java程序员面试宝典(第三版))



第1 部分 求职过程


古人云:凡事预则立,不预则废。机会都是垂青有准备的人。为了得到一份满意的工作,求职者一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事情做完,即便有计划外的事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。


第1 章 应聘求职..................................................................................................................2


每年的9 月到次年的1 月,都是应届毕业生求职、在职人员跳槽的高峰期。对于即将成为程序员的应届毕业生们,在求职过程中怎样确定目标公司和目标职位?对于已经是程序员的跳槽大军,是按照技术路线发展自己的职业生涯,还是走向管理岗位继续自己的职业道路,或者是改变自己的发展轨迹?在求职过程中要注意哪些细节?这些都是求职者所关心的话题。


1.1 应聘渠道.............................................................................................................2


1.2 应聘流程.............................................................................................................3


第2 章 简历书写..................................................................................................................4


据统计,80%的简历都是不合格的。不少人事管理者抱怨收到的许多简历在格式上很糟糕。简历应该如何做到在格式上简洁明了,重点突出?求职信应该如何有足够的内容推销自己?如何控制长度,言简意赅?相信读了本章你会对简历的撰写有一个新的认识。


2.1 书写简历注意事项.............................................................................................4


2.2 简历模板.............................................................................................................6


第3 章 求职五步曲............................................................................................................10


笔试、电话面试和面试是顺利求职的三个过程。三关全过才能顺利签约,只要有一关没能通过,就会被“刷”掉。除此之外,签约本身又何尝不是一个重要的考试?涉及你的未来、人生、行业甚至家庭。当然有签约就有可能会有违约,真希望你们不必走第五步,但是这个世界毕竟不是童话。


3.1 笔试...................................................................................................................10


3.2 电话面试...........................................................................................................12


3.3 面试...................................................................................................................13


3.4 签约...................................................................................................................14


3.5 违约...................................................................................................................18


第4 章 职业生涯发展规划................................................................................................20


在一般情况下,我们工作一年之后,对自己的喜好及擅长都有了更加深刻的了解,这时会有较为明确的职业发展规划。


4.1 缺乏工作经验的应届毕业生...........................................................................20


4.2 更换工作的程序员们.......................................................................................22


4.3 快乐地工作.......................................................................................................23


第2 部分 Java 程序设计


本部分主要以Java 设计语言为基础,通过大量实际的例子分析各大公司Java 面试题目,从技术上分析面试题的内涵。一般公司的面试题都是两套——C++或Java,面试者可以选择。


第5 章 Java 程序设计基本概念........................................................................................28


对于一个求职者或者应届毕业生来说,公司除了对项目经验有所问询之外,最好的考试办法就是检查基本功,包括编程风格,以及对赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。当然,在考试之前最好对自己所掌握的程序概念知识有所了解,尤其是对各种细致的考点要加以重视。本章考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。


5.1 JVM...................................................................................................................28


5.2 i++.....................................................................................................................34


5.3 类型转换...........................................................................................................37


5.4 程序结构...........................................................................................................41


5.5 运算符...............................................................................................................42


5.6 异常...................................................................................................................47


5.7 反射...................................................................................................................59


第6 章 传递与引用............................................................................................................61


Java 语言明确说明取消了指针,因为指针往往是在带来方便的同时导致代码不安全的根源,而且还会使程序变得非常复杂和难以理解,滥用指针写成的代码不亚于使用早已“臭名昭著”的GOTO 语句。Java 放弃指针的概念绝对是极其明智的。但这只是在Java 语言中没有明确的指针定义,实质上,每一个new 语句返回的都是一个指针的引用,只不过在大多数时候Java 不用关心如何操作这个“指针”,更不用像在操作C++的指针那样胆战心惊,唯一要多注意的是在给函数传递对象的时候。


6.1 传值与传引用...................................................................................................61


6.2 静态变量与私有变量.......................................................................................66


6.3 输入/输出流......................................................................................................67


6.4 序列化...............................................................................................................71


第7 章 循环、条件、概率................................................................................................73


递归过程的执行总是一个过程体未执行完,就带着本次执行的结果又进入另一轮过程体的执行……如此反复,不断深入,直到某次过程的执行遇到终止递归调用的条件成立时,则不再深入,而执行本次的过程体余下的部分,然后又返回到上一次调用的过程体中,执行其余下的部分……如此反复,直到回到起始位置上,才最终结束整个递归过程的执行,得到相应的执行结果。递归过程的程序设计的核心就是参照这种执行流程,设计出一种适合“逐步深入,而后又逐步返回”的递归调用模型,以解决实际的面试例题。


7.1 典型递归问题...................................................................................................73


7.2 循环与条件.......................................................................................................78


第8 章 Java 内存管理........................................................................................................84


内存管理太重要了,花费多少口舌介绍它都不过分。笔者曾经见到这样一句话:“C++程序员觉得内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以一定不能自己去管理。”从某种意义上说,两者都是对的。面试中内存管理涉及堆、栈、哈希表、内存泄漏等方面。


8.1 垃圾收集...........................................................................................................84


8.2 内存管理...........................................................................................................88


8.3 clone..................................................................................................................92


第9 章 面向对象................................................................................................................95


面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看做是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为“程序=算法+数据”;面向对象编程语言为“程序=对象+消息”。


9.1 面向对象的基本概念.......................................................................................96


9.2 类和对象...........................................................................................................98


9.3 嵌套类.............................................................................................................101


9.4 集合类.............................................................................................................102


9.5 构造函数和析构函数.....................................................................................107


9.6 复制构造函数和赋值函数............................................................................. 111


9.7 多态的概念.....................................................................................................112


第10 章 继承与接口........................................................................................................116


接口在实际语言,如Delphi、Java、C++等中,都有广义和狭义之分。


10.1 基础知识.......................................................................................................116


10.2 Super .............................................................................................................124


10.3 this.................................................................................................................126


10.4 不能继承的情况...........................................................................................130


10.5 抽象类与接口...............................................................................................131


第3 部分 数据结构和设计模式


本部分主要介绍求职面试过程中出现的第二个重要的板块——数据结构,包括字符串的使用、堆、栈、排序方法等。此外,随着外企研发机构大量迁入我国,外企针对软件工程知识的考核,包括设计模式、UML、敏捷软件开发,以及.NET 技术和完全面向对象语言C#的面试题目将会有增无减,今后设计模式在面试中的比重会进一步提高。


第11 章 数据结构基础....................................................................................................138


面试时间一般有两个小时,其中至少有20~30 分钟左右是用来回答数据结构相关的问题,链表栈、堆、数组的排序和逆置是笔试必考的内容。


11.1 堆栈...............................................................................................................138


11.2 链表、哈希表...............................................................................................141


11.3 树、图...........................................................................................................143


11.4 排序基础知识...............................................................................................146


第12 章 字符串、数组、范型........................................................................................173


求职者在进行笔试时,几乎没有不考字符串、数组和范型的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。笔者曾不止一次在笔试或面试时遇到字符串的试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。范型是Java SE 1.5 的新特型,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口和方法的创建中,分别称为范型类、泛型接口、泛型方法。Java 语言引入范型的好处是安全简单。Java 范型编程也是Java 程序员面试的热点之一。求职者不能忽视这些细节,因为这些细节会体现你对操作系统、软件工程、边界内存处理等方面知识的掌控能力。


12.1 字符串基础问题...........................................................................................173


12.2 StringBuffer...................................................................................................181


12.3 正则表达式...................................................................................................188


12.4 数字流和数组...............................................................................................189


12.5 字符串其他问题...........................................................................................194


12.6 范型与容器...................................................................................................198


第13 章 设计模式............................................................................................................202


地上本没有路,走的人多了,也就成了路。设计模式如同此理,它是经验的传承,并不成体系;它是被前人发现、经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。


13.1 UML..............................................................................................................203


13.2 常见设计模式...............................................................................................204


13.3 软件工程.......................................................................................................205


第4 部分 操作系统、数据库、网络


本部分主要介绍求职面试过程中出现的第三个重要的板块——操作系统、数据库、网络知识。作为一名程序员,尤其是系统管理方面的程序员,对这几部分有深刻的理解和领悟是相当重要的。


第14 章 操作系统............................................................................................................210


操作系统面试例题主要涉及进程、线程、内存管理、垃圾回收,以及缓存等方面。


14.1 基础知识.......................................................................................................210


14.2 进程...............................................................................................................212


14.3 线程与串行化...............................................................................................214


第15 章 数据库和SQL 语言..........................................................................................226


数据库面试例题主要涉及范式、事物、存储过程、SQL 语言及索引等方面。


15.1 数据库理论问题...........................................................................................226


15.2 SQL 语言常见问题......................................................................................229


第16 章 计算机网络及分布式系统................................................................................234


网络面试例题主要涉及局域网、广域网和IP 管理等方面。


16.1 网络结构.......................................................................................................234


16.2 TCP/IP...........................................................................................................237


16.3 网络其他问题...............................................................................................241


第5 部分 Java 开源


EJB 组件曾经被认为是一个重量级的组件。EJB 3.0 规范的重要目标就是简化EJB 的开发,提供一个相对轻量级的组件方案。Spring 基于轻量内核,然后通过集成第三方的服务器来提供完整的架构。


第17 章 J2EE 技术..........................................................................................................250


从整体上讲,J2EE 是使用Java 技术开发企业级应用的一种事实上的工业标准(Sun 公司出于其自身利益的考虑,至今没有将Java 及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和促进企业级应用过程中的产物。目前,Java 平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE 和适用于企业级应用的J2EE。Sun 推出J2EE 的目的是为了消除传统Client/Server 模式的弊病,迎合Browser/Server 架构的潮流,为应用Java 技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE 规范分别开发了不同的J2EE 应用服务器,J2EE 应用服务器是J2EE 企业级应用的部署平台。由于它们都遵循了J2EE 规范,因此,使用J2EE 技术开发的企业级应用可以部署在各种J2EE应用服务器上。


17.1 Spring 轻量级架构.......................................................................................250


17.2 Hibernate.......................................................................................................252


17.3 EJB................................................................................................................260


17.4 JDBC.............................................................................................................264


17.5 JDO ...............................................................................................................272


第18 章 Java 中的Web 设计..........................................................................................274


关于Web 设计的面试题目,涉及Session、Servlet、JSP、Javascript 和XML 等方面。本章的考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。


18.1 JSP.................................................................................................................274


18.2 Servlet ...........................................................................................................276


18.3 JavaScript ......................................................................................................280


18.4 XML..............................................................................................................281


18.5 APPLET........................................................................................................284


第19 章 Struts 结构设计.................................................................................................285


Struts 与Tomcat、Turbine 等诸多Apache 项目一样,是开源软件,这是它的一大优点,使开发者能更深入地了解其内部实现机制。除此之外,Struts 的优点主要集中体现在两个方面:TagLib 和页面导航。TagLib 是Struts 的标记库,灵活运用能大大提高开发效率。页面导航使系统的脉络更加清晰,通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处,尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。


19.1 AWT..............................................................................................................285


19.2 Struts 体系结构............................................................................................287


第20 章 Java 架构技术及相关中间件............................................................................290


在软件开发的过程中,人们越来越意识到软件重用的重要性。异构的系统、不同的实现方案使软件的重用变得复杂。在中间件产生以前,应用软件不得不直接面对非常底层的东西。不同的硬件体系、不同的操作系统、不同的网络协议和不同的数据库等,这些使得应用程序复杂多变。面对易变的东西,软件设计师们已经习惯于通过添加中间层的方式来隔离变化。把应用软件所要面临的共性问题进行提炼、抽象,在操作系统中添加一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件。一方面,中间件要应对底层不同的环境,针对不同的环境进行不同的调用;另一方面,中间件要对上层提供统一的接口,保证在不同的环境中为上层提供相同行为的服务。具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,大大减少了技术上的负担。


20.1 WebLogic ......................................................................................................291


20.2 WebSphere ....................................................................................................294


20.3 WebService ...................................................................................................294


第21 章 Java 测试............................................................................................................296


软件测试在软件质量安全控制上的地位不可替代。美国的软件企业将40%的工作量花在软件测试上,测试费用占项目总费用的30%~50%。如微软Windows 2000 团队动用的测试人员比项目经理和开发人员的总和还要多。之所以如此重视软件测试,是因为通过必要的测试,软件缺陷数可至少降低75%,而软件的投资回报率能达到350%。


21.1 白盒测试.......................................................................................................296


21.2 性能测试.......................................................................................................301


21.3 游戏...............................................................................................................305


第6 部分 综合面试题


本部分主要介绍求职面试过程中出现的第五个重要的板块——英语面试、电话面试和智力测试。其中,英语面试不同于普通的英语面试。就一个程序员而言,最好能够用英文流利地介绍自己的求职经历,这是进外企非常重要的一步。此外,还必须对几个常用的问题准备好相关的解答,比如你最大的缺点是什么。有些问题即便是用中文,你都很难回答,更何况是用英文去回答。但是求职过程本身就是一个准备的过程,精心地准备,等待机会——机会总是垂青于那些精心准备的人。


第22 章 英语面试............................................................................................................310


如果你是一个具有战略眼光,且期待进入国际性跨国大企业的求职者,本章值得你仔细研读。


22.1 面试过程和技巧...........................................................................................310


22.2 关于工作(About Job) ..............................................................................312


22.3 关于个人(About Person).........................................................................315


22.4 关于未来(About Future) .........................................................................317


第23 章 电话面试............................................................................................................321


求职时,经常会遭遇电话面试,戏称“触电”。笔者曾经在开会、洗澡、吃饭、坐车时都接到过电话。问的问题也是五花八门,千奇百怪。


23.1 电话面试之前的准备工作...........................................................................321


23.2 电话面试交流常见问题...............................................................................322


第24 章 数字类题目分析................................................................................................331


24.1 数字规律类题目...........................................................................................331


24.2 数字填充类题目...........................................................................................334


24.3 数字运算类题目...........................................................................................335


24.4 应用数学类题目...........................................................................................337


第25 章 图表类题目分析................................................................................................344


25.1 图形变换类题目...........................................................................................344


25.2 表格分析类题目...........................................................................................351


第26 章 智力类题目分析................................................................................................353


26.1 推理类题目...................................................................................................353


26.2 博弈论...........................................................................................................355


26.3 概率...............................................................................................................357


精彩节摘


· · · · · · (收起)





























































































































































  • 上一篇: libpcap api
  • 下一篇: 网络攻防演练总结报告
  • 版权声明


    相关文章:

  • libpcap api2025-08-02 22:30:03
  • scanf-s2025-08-02 22:30:03
  • img标签使用2025-08-02 22:30:03
  • 568b网线接法图2025-08-02 22:30:03
  • java内存分析工具 jsate2025-08-02 22:30:03
  • 网络攻防演练总结报告2025-08-02 22:30:03
  • 命名实体识别技术2025-08-02 22:30:03
  • 计算机组成 硬件2025-08-02 22:30:03
  • 透明代码大全2025-08-02 22:30:03
  • 线程池用法2025-08-02 22:30:03