《Java核心技术及面试指南》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:金华
  • 出 版 社:
  • 出版年份:2018
  • ISBN:
  • 页数:0 页
图书介绍:

第1章 带你走进Java的世界 1

1.1搭建Java开发环境,运行基本程序 2

1.1.1在MyEclipse中开发第一个Java程序 2

1.1.2第一个程序分析容易犯的错误 4

1.1.3开发稍微复杂带函数调用的程序 5

1.1.4可以通过Debug来排查问题 5

1.1.5输入运行时的参数 7

1.2遵循规范,让你的代码看上去很专业 9

1.2.1注意缩进 9

1.2.2规范命名 9

1.2.3在必要的地方加注释,让别人能看懂你的代码 10

1.2.4把不同类型的代码放入不同的类、不同的包(package) 11

1.3高效学习法,让你不再半途而废 12

1.3.1在公司项目中,Web是重点,Core是基础 12

1.3.2Core和Web知识点的学习路线图 12

1.3.3从基本的LinkedList入手,分享一些学习方法 14

1.3.4除非有特殊的需求,否则可以延后学习的知识点 16

1.3.5以需求为导向,否则效率不高 17

1.3.6提升能力后,成功跳槽时常见的忧虑 18

第2章 基本语法中的常用技术点精讲 19

2.1基本数据类型、封装类和基本运算操作 20

2.1.1从int和Integer来区别基本数据类型和封装类 20

2.1.2左加加和右加加的使用建议 21

2.1.3可以通过三目运算符来替代简单的if语句 22

2.1.4==和equals的区别 23

2.1.5基本数据类型、封装类和运算操作的面试题 24

2.2流程控制时的注意要点 24

2.2.1以if分支语句为例,观察条件表达式中的注意要点 24

2.2.2避免短路现象 26

2.2.3尤其注意while,do…while和for循环的边界值 27

2.2.4switch中的break和default 28

2.2.5流程控制方面的面试题 30

2.3需要单独分析的String对象 30

2.3.1通过String定义常量和变量的区别 30

2.3.2通过String来了解“内存值不可变” 32

2.3.3通过String和StringBuilder的区别查看内存优化 34

2.3.4会被不知不觉调用的toString()方法 35

2.3.5使用String对象时容易出错的问题点 36

2.3.6String相关的面试题 37

2.4论封装:类和方法 37

2.4.1类和实例的区别 37

2.4.2方法的参数是副本,返回值需要return 39

2.4.3通过合理的访问控制符实现封装 40

2.4.4静态方法和静态变量 41

2.4.5默认构造函数和自定义的构造函数 42

2.5论继承:类的继承和接口的实现 43

2.5.1从项目角度(非语法角度)观察抽象类和接口 43

2.5.2子类中覆盖父类的方法 45

2.5.3Java是单重继承,来看看老祖宗Object类的常用方法 45

2.5.4不能回避的final关键字 47

2.5.5要理解finalize方法,但别重写 48

2.6论多态:同一方法根据不同的输入有不同的作用 49

2.6.1通过方法重载实现多态 49

2.6.2方法重载和覆盖 50

2.6.3构造函数能重载但不能覆盖,兼说this和super 51

2.6.4通过多态减少代码修改成本 54

2.7面向对象思想的常用面试题及解析 55

第3章 集合类与常用的数据结构 58

3.1常见集合类对象的典型用法 59

3.1.1通过数组来观察线性表类集合的常见用法 59

3.1.2以HashMap为代表,观察键值对类型的集合对象 60

3.1.3Set类集合的使用场景 62

3.2要学习线性表类集合,你必须掌握这些知识 63

3.2.1ArrayList和LinketList等线性表的适用场景 63

3.2.2对比ArrayList和Vector对象,分析Vector为什么不常用 66

3.2.3通过线性表初步观察泛型 67

3.2.4Set集合是如何判断重复的 68

3.2.5TreeSet、HashSet和LinkedHashSet的特点 70

3.2.6集合中存放的是引用:通过浅复制和深复制来理解 74

3.2.7通过迭代器访问线性表的注意事项 78

3.2.8线性表类集合的面试题 80

3.3关于键值对集合,你必须掌握这些基本知识 80

3.3.1通过Hash算法来了解HashMap对象的高效性 80

3.3.2为什么要重写equals和hashCode方法 81

3.3.3通过迭代器遍历HashMap的方法 84

3.3.4综合对比HashMap、HashTable及HashSet三个对象 87

3.3.5键值对部分的面试题 87

3.4Collections类中包含着操控集合的常见方法 88

3.4.1通过sort方法对集合进行排序 88

3.4.2把线程不安全变成线程安全的方法 89

3.5泛型的深入研究 90

3.5.1泛型可以作用在类和接口上 90

3.5.2泛型的继承和通配符 92

3.6集合部分的面试题及解析 94

第4章 异常处理与IO操作 97

4.1异常处理的常规知识点 98

4.1.1错误和异常 98

4.1.2异常处理的定式,try…catch…finally语句 99

4.1.3运行期异常类不必包含在try从句中 100

4.1.4throw,throws的Throwable的区别 101

4.2高级程序员需要掌握的异常部分知识点 102

4.2.1finally中应该放内存回收相关的代码 102

4.2.2在子类方法中不应该抛出比父类范围更广的异常 103

4.2.3异常处理部分的使用要点 104

4.2.4异常部分的面试题 107

4.3常见的IO读写操作 107

4.3.1遍历指定文件夹中的内容 108

4.3.2通过复制文件的案例解析读写文件的方式 109

4.3.3默认的输入输出设备与重定向 111

4.3.4生成和解开压缩文件 115

4.3.5对IO操作的总结 117

4.4非阻塞性的NIO操作 118

4.4.1与传统IO的区别 119

4.4.2NIO的三大重要组件 119

4.4.3通道(Channel)和缓冲器(Buffer) 119

4.4.4选择器(Selector) 122

4.5解析XML文件 124

4.5.1XML的文件格式 124

4.5.2基于DOM树的解析方式 125

4.5.3基于事件的解析方式 127

4.5.4DOM和SAX两种解析方式的应用场景 131

4.6Java IO部分的面试题 131

第5章 SQL,JDBC与数据库编程 132

5.1项目中常用SQL语句的注意事项 133

5.1.1尽量别写select 133

5.1.2count(*)和count(字段名)的比较 133

5.1.3insert的注意事项 134

5.1.4在delete中,可以通过in语句同时删除多个记录 135

5.1.5merge和update的比较 136

5.1.6关于存储过程的分析 137

5.2通过JDBC开发读写数据库的代码 138

5.2.1MySQL数据库中的准备工作 138

5.2.2编写读数据表的代码 139

5.2.3编写插入、更新、删除数据表的代码 141

5.2.4迁移数据库后,JDBC部分代码的改动 143

5.3优化数据库部分的代码 144

5.3.1把相对固定的连接信息写入配置文件中 145

5.3.2用PreparedStatement以批处理的方式操作数据库 148

5.3.3通过PreparedStatement对象防止SQL注入 149

5.3.4使用C3P0连接池 150

5.3.5数据库操作方面的面试题 153

5.4通过JDBC进行事务操作 153

5.4.1开启事务,合理地提交和回滚 153

5.4.2事务中的常见问题:脏读、幻读和不可重复读 155

5.4.3事务隔离级别 156

5.5面试时JDBC方面的准备要点 157

第6章 反射机制和代理模式 160

6.1字节码与反射机制 161

6.1.1字节码和.class文件 161

6.1.2Class类是反射实现的语法基础 161

6.2反射的常见用法 161

6.2.1查看属性的修饰符、类型和名称 162

6.2.2查看方法的返回类型、参数和名称 163

6.2.3通过forName和newInstance方法加载类 164

6.2.4通过反射机制调用类的方法 166

6.2.5反射部分的面试题 167

6.3代理模式和反射机制 168

6.3.1代理模式 168

6.3.2有改进余地的静态代理模式 169

6.3.3在动态代理中能看到反射机制 171

6.4你已经掌握了一种设计模式,就应大胆地说出来 174

6.4.1如何在面试时找机会说出“代理模式” 174

6.4.2面试时如何说出对代理模式的认识 175

第7章 多线程与并发编程 177

7.1线程的基本概念与实现多线程的基本方法 178

7.1.1线程和进程 178

7.1.2线程的生命周期 178

7.1.3通过extends Thread来实现多线程 179

7.1.4通过implements Runnable来实现多线程(线程优先级) 181

7.1.5多线程方面比较基本的面试题 183

7.2多线程的竞争和同步 183

7.2.1通过sleep方法让线程释放CPU资源 183

7.2.2Synchronized作用在方法上 184

7.2.3Synchronized作用在代码块上 189

7.2.4配套使用wait和notify方法 191

7.2.5死锁的案例 195

7.2.6Synchronized的局限性 196

7.2.7通过锁来管理业务层面的并发性 200

7.2.8通过Condition实现线程间的通信 204

7.2.9通过Semaphore管理多线程的竞争 208

7.2.10多线程并发方面的面试题 210

7.3对锁机制的进一步分析 211

7.3.1可重入锁 211

7.3.2公平锁和非公平锁 213

7.3.3读写锁 213

7.4从内存结构观察线程并发 217

7.4.1直观地了解线程安全与不安全 217

7.4.2从线程内存结构中了解并发结果不一致的原因 219

7.4.3volatile不能解决数据不一致的问题 220

7.4.4通过ThreadLocal为每个线程定义本地变量 221

7.5线程池 223

7.5.1通过ThreadPoolExecutor实现线程池 223

7.5.2通过Callable让线程返回结果 226

7.5.3通过ExecutorService创建4种类型的线程池 227

7.6多线程综合面试点归纳 228

7.6.1说出多线程的基本概念和常规用法 228

7.6.2说出多线程并发的知识点 229

7.6.3从线程内存角度分析并发情况 230

第8章 让设计模式真正帮到你 232

8.1初识设计模式 233

8.1.1设计模式的分类 233

8.1.2面试时的常见问题(学习设计模式的侧重点) 233

8.2从单例模式入手来了解创建型设计模式 234

8.2.1单例模式的实现代码和应用场景 234

8.2.2通过工厂模式屏蔽创建细节 236

8.2.3工厂模式违背了开闭原则 237

8.2.4抽象工厂和工厂模式的区别 238

8.2.5分析建造者模式和工厂模式的区别 239

8.3了解结构型的设计模式 242

8.3.1简单的装饰器模式 242

8.3.2通过适配器模式协调不同类之间的调用关系 245

8.4了解行为型的设计模式 247

8.4.1通过迭代器了解迭代模式 247

8.4.2常见但大多数情况不用自己实现的责任链模式 250

8.4.3适用于联动场景的观察者模式 251

8.5设计模式背后包含的原则 254

8.5.1应用依赖倒转原则能减少修改所影响的范围 254

8.5.2能尽量让类稳定的单一职责原则 256

8.5.3继承时需要遵循的里氏替换原则 257

8.5.4接口隔离原则和最少知道原则 260

8.5.5通过合成复用原则优化继承的使用场景 261

8.6设计模式方面学习面试经验总结 262

8.6.1设计模式方面对于不同程序员的面试标准 262

8.6.2设计模式方面学习和面试的误区 263

8.6.3面试时如何展示设计模式的能力 264

8.6.4设计模式方面的面试题 265

第9章 虚拟机内存优化技巧 266

9.1虚拟机体系结构和Java跨平台特性 267

9.1.1字节码、虚拟机、JRE和跨平台特性 267

9.1.2虚拟机体系结构 268

9.1.3归纳静态数据、基本数据类型和引用等数据的存储位置 270

9.2Java的垃圾收集机制 271

9.2.1分代管理与垃圾回收流程 271

9.2.2不重视内存性能可能会导致的后果 272

9.2.3判断对象可回收的依据 273

9.2.4深入了解finalize方法 274

9.2.5Java垃圾回收机制方面的初级面试题 275

9.3通过强、弱、软、虚4种引用进一步了解垃圾回收机制 275

9.3.1软引用和弱引用的用法 276

9.3.2软引用的使用场景 277

9.3.3通过WeakHashMap来了解弱引用的使用场景 278

9.3.4虚引用及其使用场景 280

9.4更高效地使用内存 283

9.4.1StoptheWorld、栈溢出错误和内存溢出错误 284

9.4.2内存泄漏的示例 285

9.4.3在代码中优化内存性能的具体做法 288

9.4.4调整运行参数,优化堆内存性能 289

9.5定位和排查内存性能问题 290

9.5.1什么情况下该排查内存问题 291

9.5.2通过JConsole监控内存使用量 291

9.5.3通过GC日志来观察内存使用情况 292

9.5.4通过打印内存使用量定位问题点 294

9.5.5出现OOM后如何获取和分析Dump文件 295

9.5.6出现内存问题该怎样排查 297

9.6内部类、final与垃圾回收 298

9.7在面试中如何展示虚拟机和内存调优技能 300

9.7.1从虚拟机体系结构引出内存管理的话题 301

9.7.2如何自然地引出内存话题 301

9.7.3根据堆区结构,阐述垃圾回收的流程 302

9.7.4进一步说明如何写出高性能的代码 302

9.7.5展示监控、定位和调优方面的综合能力 303

第10章 通过简历和面试找到好工作 304

10.1哪些人能应聘成功 305

10.1.1公司凭什么留下待面试的简历 305

10.1.2技术面试官考查的要点及各要点的优先级 306

10.1.3项目经理和人事的考查要点 307

10.1.4入职后怎样进行背景调查 308

10.2怎样的简历能帮你争取到面试机会 308

10.2.1简历中应包含的要素,一个都别落下 308

10.2.2如何描述公司的工作情况 309

10.2.3描述项目经验的技巧 310

10.2.4投送简历时的注意要点 316

10.3面试时叙述项目经验和回答问题的技巧 318

10.3.1通过叙述项目技能引导后继问题 318

10.3.2结合项目实际回答问题 319

10.4面试前可以做的准备 320

10.4.1事先准备些亮点,回答问题时找机会抛出 321

10.4.2事先练习展示责任心和团队协作能力的方式 322

10.4.3准备提问环节的问题,以求给自己加分 323

10.4.4准备用英文回答问题,以求有备无患 324

10.4.5准备些常见刁钻问题的回答,不要临场发挥 325

10.4.6准备谈薪资的措辞 327

10.5项目经理级别面试的注意要点 328

10.5.1把面试官想象成直接领导 329

10.5.2在回答中展示良好的沟通和团队协作能力 329

10.5.3让面试官确信你会干得长久 330

10.6Offer和劳动合同中需要注意的要点 331

10.7最后祝大家前程似锦 332