新書推薦:
《
突破不可能:用特工思维提升领导力
》
售價:NT$
352.0
《
王阳明大传:知行合一的心学智慧(精装典藏版)
》
售價:NT$
1010.0
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:NT$
352.0
《
南方谈话:邓小平在1992
》
售價:NT$
367.0
《
纷纭万端 : 近代中国的思想与社会
》
售價:NT$
500.0
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:NT$
765.0
《
朋党之争与北宋政治·大学问
》
售價:NT$
454.0
|
內容簡介: |
本书是一本讲解Java程序员面试笔试的实用工具书。在写法上,除了讲解如何解答Java程序员面试笔试问题以外,还引入了相关知识点辅以说明,让读者能够更加容易地理解和掌握。
本书囊括Java程序员面试笔试过程中的各类知识点。在内容广度上,搜集了近3年来几乎所有IT企业针对Java岗位的笔试面试涉及的知识点,包括但不限于Java核心知识点(容器、多线程和IO等)、Java Web(Struts、MyBatis、Kafka、Spring等)、数据库,所选择知识点均为企业招聘时所考查的知识点。在讲解的深度上,本书由浅入深,详细分析每一个知识点,并提炼归纳,同时,引入相关知识点,并对其进行深度剖析,让读者不仅能够理解每个知识点,还能在遇到相似问题的时候,也能游刃有余地解决,而这些内容很多是其他同类书籍所没有的。书中根据知识点进行分门别类,结构合理,条理清晰,便于读者进行学习与检索。
本书是一本计算机相关专业毕业生面试、笔试的求职用书,同时也适合期望在计算机软、硬件行业大显身手的计算机爱好者阅读。
|
目錄:
|
前言
第1部分
Java核心知识
第1章 Java基础知识/2
1.1 Java程序初始化的顺序/2
1.2 构造方法/3
1.3 Java中clone方法的作用/4
1.4 反射/8
1.5 Lambda表达式/11
1.6 多态的实现机制/13
1.7 Overload和Override的区别/14
1.8 abstract class(抽象类)与
interface(接口)的异同/15
1.9 break、continue以及return的
区别/17
1.10 switch使用时的注意事项/17
1.11 volatile的作用/20
1.12 Java基本的数据类型/23
1.13 不可变类/24
1.14 值传递与引用传递的区别/26
1.15 i与i 的区别/29
1.16 字符串创建与存储的机制/30
1.17 “==”、equals和hashCode的
区别/36
1.18 String、StringBuffer、StringBuilder
和StringTokenizer的区别/37
1.19 finally块中的代码什么时候被
执行/39
1.20 异常处理/42
1.21 常见面试笔试真题/42
第2章 流/52
2.1 输入输出流/52
2.1.1 Java IO流的实现机制/52
2.1.2 管理文件和目录的类/54
2.1.3 Java Socket/55
2.1.4 Java序列化/55
2.2 同步与异步、阻塞与非阻塞/58
2.3 BIO/59
2.4 NIO/60
2.4.1 Buffer/61
2.4.2 Channel/63
2.4.3 Selector/65
2.4.4 AIO/69
2.5 常见面试笔试真题/72
第3章 容器/74
3.1 Collections框架/74
3.2 ArrayList、Vector和LinkedList的
区别/75
3.3 Map/76
3.3.1 HashMap/76
3.3.2 Java8之前的HashMap/78
3.3.3 Java8提供的HashMap/79
3.3.4 TreeMap/80
3.3.5 LinkedhashMap/81
3.3.6 Java8之前的LinkedHashMap/81
3.3.7 Java8中的LinkedHashMap/82
3.3.8 Hashtable/86
3.3.9 WeakHashMap/87
3.3.10 HashMap、HashTable、TreeMap
和WeakHashMap的区别/90
3.3.11 用自定义类型作为HashMap或Hashtable
的key需要注意的问题/90
3.3.12 ConcurrentHashMap/94
3.4 Set/98
3.4.1 HashSet/99
3.4.2 LinkedHashSet/99
3.4.3 TreeSet/100
3.5 BlockingQueue/100
3.5.1 ArrayBlockingQueue/101
3.5.2 LinkedBlockingQueue/103
3.5.3 PriorityBlockingQueue/104
3.5.4 ConcurrentLinkedQueue/106
3.5.5 DelayQueue/108
3.6 Collection 和 Collections的
区别/110
3.7 迭代器/111
3.8 并行数组/112
3.9 常见面试笔试真题/113
第4章 多线程/121
4.1 线程与进程/121
4.2 同步和异步有什么区别/122
4.3 如何实现Java多线程/122
4.4 run与start的区别/125
4.5 多线程同步/126
4.6 Lock的分类/129
4.7 synchronized与Lock的异同/135
4.8 sleep与wait的区别/139
4.9 终止线程的方法/140
4.10 死锁/141
4.11 守护线程/141
4.12 join方法的作用/142
4.13 如何捕获一个线程抛出的
异常/143
4.14 线程池/145
4.14.1 Executor接口/145
4.14.2 ExecutorService/146
4.14.3 ThreadPoolExecutor/147
4.14.4 线程池的使用方法/149
4.15 ThreadLocal/152
4.15.1 应用实例/152
4.15.2 原理解析/153
4.15.3 改进/155
4.16 Latch/155
4.17 Barrier/156
4.18 Java中的Fork/Join框架/157
4.19 CAS/162
4.20 线程调度与优先级/165
4.21 常见面试笔试真题/166
第5章 内存分配/169
5.1 JVM内存划分/169
5.2 运行时内存划分/171
5.2.1 年轻代、老年代与永久代/171
5.2.2 元空间MetaSpace/172
5.3 垃圾回收/173
5.3.1 垃圾回收算法/173
5.3.2 串行垃圾回收/175
5.3.3 并行垃圾回收/176
5.3.4 并发标记清理回收/176
5.3.5 G1/178
5.3.6 Shenandoah/180
5.4 Java平台与内存管理/180
5.4.1 为什么说Java是平台独立性
语言/180
5.4.2 Java平台与其他语言平台的区别/181
5.4.3 JVM加载class文件的原理机制/181
5.4.4 Java是否存在内存泄漏问题/182
5.4.5 Java中的堆和栈的区别/184
5.4.6 JVM常用的参数/185
5.5 常见面试笔试真题/187
第6章 设计模式/188
6.1 设计模式中的原则/188
6.1.1 单一职责原则/188
6.1.2 开放封闭原则/189
6.1.3 里氏替换原则/191
6.1.4 依赖倒置原则/192
6.1.5 接口隔离原则/193
6.1.6 合成复用原则/194
6.1.7 迪米特法则/195
6.2 单例模式/195
6.3 工厂模式/196
6.4 适配器模式/197
6.5 观察者模式/198
6.6 常见面试笔试真题/199
第2部分
Java Web核心知识
第7章 Struts/203
7.1 Struts框架/203
7.2 Struts框架响应客户请求的工作
流程/205
7.3 Struts框架的数据验证/205
7.4 Form Bean的表单验证流程/205
7.5 元素包含的属性/206
7.6 ActionForm Bean的作用/206
7.7 Struts2的请求处理流程/206
7.8 Struts2中的拦截器/207
7.9 Struts2国际化/207
7.10 常见面试笔试真题/208
第8章 MyBatis/209
8.1 MyBatis缓存的基本概念/209
8.2 MyBatis分页/210
8.3
|
內容試閱:
|
《Java程序员面试笔试宝典》已经出版了多年,在读者中产生了强烈反响,很多读者反映该书不错,对他们求职就业起到了非常积极的作用。近期有热心的读者反馈书中的部分知识点比较陈旧,而且Java Web相关的知识点太少。为了更好地满足读者的需求,我萌发了对其进行修订的想法,在我看来,只有不断与读者进行交流并得知他们真实的想法与需求,并把这些需求都放在书中体现出来才能帮助到更多的读者。
我虽然不是计算机方面的权威,也非Java语言方面的专家,但愿意将自己的所学、所知与所想无私地与众多学弟学妹们分享,让他们在求职的道路上能够越来越顺,少走我们曾经走过的弯路。
其实,近些年来,无论是传统的互联网应用,还是当前发展迅猛的云计算、海量数据处理以及移动互联网,都离不开Java语言,Java语言始终在信息技术浪潮中扮演着极其重要的角色,从历次编程语言排行榜的榜单不难看出,Java语言与C语言的应用地位和规模不分伯仲,它们无愧于计算机历重要的编程语言。鉴于此,很多主流IT企业,例如大型互联网企业(门户网站、即时通信、电子商务、搜索引擎等)、手机应用开发企业等都会使用Java语言作为开发语言,当他们招贤纳士时,自然而然地希望求职者能够熟悉Java语言的基本原理,并能够熟练使用Java语言从事实际的项目研发。
本书延续并继承了版的很多经典内容:Java基础知识、Java Web基础知识等,另一方面,结合当前的实际情况与读者的反馈从以下几个方面做了改动:
1)删除了部分陈旧的知识点(jsp与EJB等),增加了部分知识点(Spring、Redis等)的新特性;
2)针对部分热点问题如MyBatis、Kafka,增加了对其内部实现原理的解析;
3)增加了大量Java Web相关的知识点。
本书在编写过程中,得到了机械工业出版社时静与尚晨两位编辑的大力支持与通力配合。创作的过程是一个自我斗争、自我救赎的过程,充满了孤独,无数个节假日,无数个深夜,当其他人沉浸在幸福美满的快乐生活中的时候,我们需要安静地坐在计算机前,将文字内容反复提炼,力求简单明了,并将实例代码一一验证,力求准确无误。尽管孤独,但我们不寂寞,我们觉得自己所做的事情非常有意义,只要付出的辛苦能换来求职者们满意的工作,我们就心满意足了。
由于编者水平有限,书中不足之处在所难免,还望读者见谅。读者如果发现问题或有困惑,都可以通过邮箱xdhehao@foxmail.com或者xdxuepeng@foxmail.com联系编者。
编 者
|
|