Java程序员面试笔试宝典第2版pdf下载pdf下载

Java程序员面试笔试宝典第2版百度网盘pdf下载

作者:
简介:本篇主要提供Java程序员面试笔试宝典第2版pdf下载
出版社:机械工业出版社自营官方旗舰店
出版时间:2021-11
pdf下载价格:9.00¥


预览


内容介绍

产品特色

内容简介

本书是一本讲解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 MyBatis的查询类型/210
8.4 MyBatis的延时加载/211
8.5 常见面试笔试真题/212
第9章 Redis/215
9.1 Redis的基本概念/215
9.2 Memcache与Redis的区别/216
9.3 Redis把所有数据放到内存中的
原因/217
9.4 Redis实现分布式锁的方式/218
9.5 Redis高性能的原因/218
9.6 Redis持久化/219
9.7 Redis集群/219
9.8 Redis的Key过期的删除策略/220
9.9 缓存穿透/220
9.10 Redis哨兵(Sentinel)/221
9.11 Redis的Pipeline(管道)/221
9.12 Redis的String类型的实现
原理/222
9.13 常见面试笔试真题/223
第10章 Kafka/227
10.1 Kafka的消息传递模式/227
10.2 Kafka 中的组件/228
10.3 Kafka的消息生产者/230
10.3.1 Kafka生产者的运行的流程/231
10.3.2 Kafka生产者分区/232
10.3.3 Kafka消息发送(ACK)机制/232
10.3.4 副本的同步复制和异步复制/232 10.4 Kafka的消息消费者/233
10.4.1 设计原理/233
10.4.2 监听原理/234
10.4.3 API/234
10.5 Kafka的Topic和Partition/235
10.5.1 主题Topic/235
10.5.2 分片Partition/235
10.5.3 日志/236
10.5.4 消息副本Replications/237
10.6 流处理/239
10.7 Kafka吞吐量及消息发送/240
10.8 Kafka文件高效存储设计原理/240
10.9 其他消息队列介绍/241
10.10 常见面试笔试真题/242
第11章 Spring/248
11.1 Spring基础/248
11.1.1 Spring的基本概念/248
11.1.2 Spring 中的模块/249
11.1.3 Spring框架的设计模式/250
11.1.4 IOC/253
11.1.5 Spring IOC容器/255
11.1.6 AOP的实现方法/256
11.1.7 Spring AOP 的注解/259
11.1.8 Spring Bean的基本概念/260
11.1.9 Spring的注解/262
11.1.10 Spring Bean的配置方式/262
11.1.11 Spring Bean的注入方式/263
11.1.12 Spring 支持的数据库类型/264
11.2 Spring Boot/265
11.2.1 Spring Boot的优势/265
11.2.2 Spring Boot 中的 Starter/265
11.2.3 Spring、Spring Boot 和 Spring Cloud
的关系/265
11.2.4 Spring Boot 的配置文件格式/266
11.2.5 Spring Boot 配置加载顺序/266
11.2.6 Spring Boot 如何定义多套不同环境
配置/267
11.2.7 Spring Boot的自动配置的实现
方式/267
11.2.8 Spring Boot Thin jar和Fat jar的
区别/268
11.3 Spring MVC/268
11.3.1 Spring MVC 框架/268
11.3.2 Spring MVC 的重要组件/269
11.3.3 DispatcherServlet 的工作流程/269
11.3.4 WebApplicationContext 的作用/269
11.3.5 Spring MVC常用的注解/270
11.4 Spring Data/270
11.5 Spring Cloud/271
11.5.1 微服务/271
11.5.2 Ribbon和 OpenFeign、RestTemplate
的关系与区别/272
11.5.3 Eureka/272
11.5.4 服务雪崩、服务熔断和服务
降级/273
11.5.5 Spring Cloud config 配置加密的
方式/274
11.6 Dubbo框架/274
11.6.1 Dubbo的发展历程和应用场景/274
11.6.2 Dubbo原理/275
11.6.3 Dubbo的整体架构设计分层/278
11.6.4 Dubbo支持的协议/278
11.6.5 Dubbo的注册中心/278
11.6.6 Dubbo容错方案/279
11.6.7 Dubbo负载均衡/280
11.6.8 Dubbo核心的配置/280
11.6.9 Sping项目与Dubbo的整合/280
11.6.10 Dubbo的服务降级/281
11.7 常见面试笔试真题/281
第3部分
其他知识点
第12章 数据库/290
12.1 SQL/290
12.2 内连接与外连接/292
12.3 事务/292
12.4 存储过程/294
12.5 范式/294
12.6 触发器/295
12.7 游标/296
12.8 数据库日志/297
12.9 UNION和UNION ALL/297
12.10 视图/298
12.11 三级封锁协议/298
12.12 索引/299
12.13 常见面试笔试真题/300


前言/序言


《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联系编者。

编 者