第1章 带你走进Java的世界
1.1 搭建Java开发环境,运行基本程序
1.1.1 在MyEclipse中开发第一个Java程序
1.1.2 第一个程序分析容易犯的错误
1.1.3 开发稍微复杂带函数调用的程序
1.1.4 可以通过Debug来排查问题
1.1.5 输入运行时的参数
1.2 遵循规范,让你的代码看上去很专业
1.2.1 注意缩进
1.2.2 规范命名
1.2.3 在必要的地方加注释,让别人能看懂你的代码
1.2.4 把不同类型的代码放入不同的类、不同的包(package)
1.3 高效学习法,让你不再半途而废
1.3.1 在公司项目中,Web是重点,Core是基础
1.3.2 Core和Web知识点的学习路线图
1.3.3 从基本的LinkedList入手,分享一些学习方法
1.3.4 除非有特殊的需求,否则可以延后学习的知识点
1.3.5 以需求为导向,否则效率不高
1.3.6 提升能力后,成功跳槽时常见的忧虑
第2章 基本语法中的常用技术点精讲
第3章 集合类与常用的数据结构
第4章 异常处理与IO操作
第5章 SQL,JDBC与数据库编程
5.1 项目中常用SQL语句的注意事项
5.1.1 尽量别写select *
5.1.2 count(*)和count(字段名)的比较
5.1.3 insert的注意事项
5.1.4 在delete中,可以通过in语句同时删除多个记录
5.1.5 merge和update的比较
5.1.6 关于存储过程的分析
5.2 通过JDBC开发读写数据库的代码
5.2.1 MySQL数据库中的准备工作
5.2.2 编写读数据表的代码
5.2.3 编写插入、更新、删除数据表的代码
5.2.4 迁移数据库后,JDBC部分代码的改动
5.3 优化数据库部分的代码
5.3.1 把相对固定的连接信息写入配置文件中
5.3.2 用PreparedStatement以批处理的方式操作数据库
5.3.3 通过PreparedStatement对象防止SQL注入
5.3.4 使用C3P0连接池
5.3.5 数据库操作方面的面试题
5.4 通过JDBC进行事务操作
5.4.1 开启事务,合理地提交和回滚
5.4.2 事务中的常见问题:脏读、幻读和不可重复读
5.4.3 事务隔离级别
5.5 面试时JDBC方面的准备要点
第6章 反射机制和代理模式
6.1 字节码与反射机制
6.1.1 字节码和.class文件
6.1.2 Class类是反射实现的语法基础
6.2 反射的常见用法
6.2.1 查看属性的修饰符、类型和名称
6.2.2 查看方法的返回类型、参数和名称
6.2.3 通过forName和newInstance方法加载类
6.2.4 通过反射机制调用类的方法
6.2.5 反射部分的面试题
6.3 代理模式和反射机制
6.3.1 代理模式
6.3.2 有改进余地的静态代理模式
6.3.3 在动态代理中能看到反射机制
6.4 你已经掌握了一种设计模式,就应大胆地说出来
6.4.1 如何在面试时找机会说出“代理模式”
6.4.2 面试时如何说出对代理模式的认识
第7章 多线程与并发编程
7.1 线程的基本概念与实现多线程的基本方法
7.1.1 线程和进程
7.1.2 线程的生命周期
7.1.3 通过extends Thread来实现多线程
7.1.4 通过implements Runnable来实现多线程(线程优先级)
7.1.5 多线程方面比较基本的面试题
7.2 多线程的竞争和同步
7.2.1 通过sleep方法让线程释放CPU资源
7.2.2 Synchronized作用在方法上
7.2.3 Synchronized作用在代码块上
7.2.4 配套使用wait和notify方法
7.2.5 死锁的案例
7.2.6 Synchronized的局限性
7.2.7 通过锁来管理业务层面的并发性
7.2.8 通过Condition实现线程间的通信
7.2.9 通过Semaphore管理多线程的竞争
7.2.10 多线程并发方面的面试题
7.3 对锁机制的进一步分析
7.3.1 可重入锁
7.3.2 公平锁和非公平锁
7.3.3 读写锁
7.4 从内存结构观察线程并发
7.4.1 直观地了解线程安全与不安全
7.4.2 从线程内存结构中了解并发结果不一致的原因
7.4.3 volatile不能解决数据不一致的问题
7.4.4 通过ThreadLocal为每个线程定义本地变量
7.5 线程池
7.5.1 通过ThreadPoolExecutor实现线程池
7.5.2 通过Callable让线程返回结果
7.5.3 通过ExecutorService创建4种类型的线程池
7.6 多线程综合面试点归纳
7.6.1 说出多线程的基本概念和常规用法
7.6.2 说出多线程并发的知识点
7.6.3 从线程内存角度分析并发情况
第8章 让设计模式真正帮到你
8.1 初识设计模式
8.1.1 设计模式的分类
8.1.2 面试时的常见问题(学习设计模式的侧重点)
8.2 从单例模式入手来了解创建型设计模式
8.2.1 单例模式的实现代码和应用场景
8.2.2 通过工厂模式屏蔽创建细节
8.2.3 简单工厂模式违背了开闭原则
8.2.4 抽象工厂和一般工厂模式的区别
8.2.5 分析建造者模式和工厂模式的区别
8.3 了解结构型的设计模式
8.3.1 简单的装饰器模式
8.3.2 通过适配器模式协调不同类之间的调用关系
8.4 了解行为型的设计模式
8.4.1 通过迭代器了解迭代模式
8.4.2 常见但大多数情况不用自己实现的责任链模式
8.4.3 适用于联动场景的观察者模式
8.5 设计模式背后包含的原则
8.5.1 应用依赖倒转原则能减少修改所影响的范围
8.5.2 能尽量让类稳定的单一职责原则
8.5.3 继承时需要遵循的里氏替换原则
8.5.4 接口隔离原则和最少知道原则
8.5.5 通过合成复用原则优化继承的使用场景
8.6 设计模式方面学习面试经验总结
8.6.1 设计模式方面对于不同程序员的面试标准
8.6.2 设计模式方面学习和面试的误区
8.6.3 面试时如何展示设计模式的能力
8.6.4 设计模式方面的面试题
第9章 虚拟机内存优化技巧
9.1 虚拟机体系结构和Java跨平台特性
9.1.1 字节码、虚拟机、JRE和跨平台特性
9.1.2 虚拟机体系结构
9.1.3 归纳静态数据、基本数据类型和引用等数据的存储位置
9.2 Java的垃圾收集机制
9.2.1 分代管理与垃圾回收流程
9.2.2 不重视内存性能可能会导致的后果
9.2.3 判断对象可回收的依据
9.2.4 深入了解finalize方法
9.2.5 Java垃圾回收机制方面的初级面试题
9.3 通过强、弱、软、虚4种引用进一步了解垃圾回收机制
9.3.1 软引用和弱引用的用法
9.3.2 软引用的使用场景
9.3.3 通过WeakHashMap来了解弱引用的使用场景
9.3.4 虚引用及其使用场景
9.4 更高效地使用内存
9.4.1 StoptheWorld、栈溢出错误和内存溢出错误
9.4.2 内存泄漏的示例
9.4.3 在代码中优化内存性能的具体做法
9.4.4 调整运行参数,优化堆内存性能
9.5 定位和排查内存性能问题
9.5.1 什么情况下该排查内存问题
9.5.2 通过JConsole监控内存使用量
9.5.3 通过GC日志来观察内存使用情况
9.5.4 通过打印内存使用量定位问题点
9.5.5 出现OOM后如何获取和分析Dump文件
9.5.6 出现内存问题该怎样排查
9.6 内部类、final与垃圾回收
9.7 在面试中如何展示虚拟机和内存调优技能
9.7.1 从虚拟机体系结构引出内存管理的话题
9.7.2 如何自然地引出内存话题
9.7.3 根据堆区结构,阐述垃圾回收的流程
9.7.4 进一步说明如何写出高性能的代码
9.7.5 展示监控、定位和调优方面的综合能力
第10章 通过简历和面试找到好工作
10.1 哪些人能应聘成功
10.1.1 公司凭什么留下待面试的简历
10.1.2 技术面试官考查的要点及各要点的优先级
10.1.3 项目经理和人事的考查要点
10.1.4 入职后怎样进行背景调查
10.2 怎样的简历能帮你争取到面试机会
10.2.1 简历中应包含的要素,一个都别落下
10.2.2 如何描述公司的工作情况
10.2.3 描述项目经验的技巧
10.2.4 投送简历时的注意要点
10.3 面试时叙述项目经验和回答问题的技巧
10.3.1 通过叙述项目技能引导后继问题
10.3.2 结合项目实际回答问题
10.4 面试前可以做的准备
10.4.1 事先准备些亮点,回答问题时找机会抛出
10.4.2 事先练习展示责任心和团队协作能力的方式
10.4.3 准备提问环节的问题,以求给自己加分
10.4.4 准备用英文回答问题,以求有备无患
10.4.5 准备些常见刁钻问题的回答,不要临场发挥
10.4.6 准备谈薪资的措辞
10.5 项目经理级别面试的注意要点
10.5.1 把面试官想象成直接领导
10.5.2 在回答中展示良好的沟通和团队协作能力
10.5.3 让面试官确信你会干得长久
10.6 Offer和劳动合同中需要注意的要点
10.7 最后祝大家前程似锦