导图社区 Java技术栈全面梳理
本导图梳理了Java技术栈的知识点,Java语言技术、Java技术扩展、系统架构、数据结构、DB编程、维优、个人职能、技术面试,赶快收藏下图使用吧!
编辑于2021-08-14 09:44:12Java技术栈总结与梳理
java语言技术
Java核心技术·卷1 基础知识(原书第9版) [Core Java Volume I—Fundamentals (Ninth Edition)] http://item.jd.com/11345721.html Java核心技术(卷2):高级特性(原书第9版) [Core Java, Volume II--Advanced Features] http://item.jd.com/11409707.html 教学 软件开发视频大讲堂 Java从入门到精通 http://item.jd.com/11078102.html 深入 疯狂软件教育标准教材:疯狂Java讲义(第3版 附光盘) http://item.jd.com/11514816.html
java基础
Java核心技术·卷1 基础知识(原书第9版) [Core Java Volume I—Fundamentals (Ninth Edition)] http://item.jd.com/11345721.html
Java的基本程序设计结构:数据类型,变量,运算符,控制流程(块,条件,循环,多重选择switch,中断控制),数组
类,对象,继承,接口,<多态>,内部类
java图形程序设计:Swing
事件:动作,鼠标事件
异常,断言,日志,调试
泛型程序设计
集合
集合的使用与场景
ArrayList,linkList,Vector,stack
1.常规集合存储:ArrayList(变长数组,线性存储)
2.对插入,移除的性能有要求: LinkList(双向链存储)
3.有同步要求:Vector(单链表)
4.模拟栈的后进先出结构:stack
Set,TreeSet
5.去重要求:set(一般用hashSet) [内部为HashMap存储]
6.去重+有序存储:TreeSet[树结构存储]
HashMap,Hashtable,TreeMap
7.键值存取要求:Map(一般用HashMap)
[对象结构:数组+hash映射,数据结构:数组(线性存储)+Entry(链式存储)]
8.键值+有序存储:TreeMap [树存储(无数组)]
9.键值+同步:HashTable(不允许Null值存储)
多线程
java高级特性
Java核心技术(卷2):高级特性(原书第9版) [Core Java, Volume II--Advanced Features] http://item.jd.com/11409707.html
流与文件:流,文本,二进制,压缩解压,对象流与序列号,文件操作,正则表达式
xml:解析,验证,定位,生成
网络:socket编程,E-mail
数据库编程:JDBC,SQL,事务
国际化
高级Swing
高级AWT
javaBean构件
安全:用户认证,签名,加密
分布式对象:远程方法调用
本地方法:java调用C函数,访问windows注册表
javaWeb
Servlet与JSP
J2EE与EJB
HTTP/WebService
SOAP与REST
xml/json
扩展
html+CSS+javaScript
前端框架
GWT
EXT
Jquery
后端框架
SSH
SSI/SSM
Maven
java技术扩展
技术内幕
深入分析Java Web技术内幕(修订版)
《深入分析Java Web技术内幕(修订版)》主要围绕Java Web 相关技术从三方面全面、深入地进行了阐述。首先介绍前端知识,即在JavaWeb 开发中涉及的一些基本知识,包括Web 请求过程、HTTP、DNS 技术和CDN 技术。其次深入介绍了Java 技术,包括I/O 技术、中文编码问题、Javac 编译原理、class 文件结构解析、ClassLoader 工作机制及JVM 的内存管理等。最后介绍了Java 服务端技术,主要包括Servlet、Session 与Cookie、Tomcat 与Jetty服务器、Spring 容器、iBatis 框架和Velocity 框架等原理介绍,并介绍了服务端的一些优化技术。 本书不仅介绍这些技术和框架的工作原理,而且结合示例来讲解,通过通俗易懂的文字和丰富、生动的配图,让读者充分并深入理解它们的内部工作原理,同时还结合了设计模式来介绍这些技术背后的架构思维。
第1章 深入Web请求过程 1
第2章 深入分析Java I/O的工作机制 26
第3章 深入分析Java Web中的中文编码问题 61
第4章 Javac编译原理 89
第5章 深入class文件结构 122
第6章 深入分析ClassLoader工作机制 156
第7章 JVM体系结构与工作方式 180
第8章 JVM内存管理 198
第9章 Servlet工作原理解析 243
第10章 深入理解Session与Cookie 263
第11章 Tomcat的系统架构与设计模式 286
第12章 Jetty的工作原理解析 317
第13章 Spring框架的设计理念与设计模式分析 334
第14章 Spring MVC工作机制与设计模式 364
第15章 深入分析Ibatis框架之系统架构与映射原理 381
第16章 Velocity工作原理解析 397
第17章 Velocity优化实践 427
第18章 大浏览量系统的静态化架构设计 446
深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)
第一部分 走近Java
第1章 走近Java
第二部分 自动内存管理机制
第2章 Java内存区域与内存溢出异常
第3章 垃圾收集器与内存分配策略
第4章 虚拟机性能监控与故障处理工具
第5章 调优案例分析与实战
第三部分 虚拟机执行子系统
第6章 类文件结构
第7章 虚拟机类加载机制
第8章 虚拟机字节码执行引擎
第9章 类加载及执行子系统的案例与实战
第四部分 程序编译与代码优化
第10章 早期(编译期)优化
第11章 晚期(运行期)优化
第五部分 高效并发
第12章 Java内存模型与线程
第13章 线程安全与锁优化
技术应用
字符处理
上传,下载
导入导出,excel
压缩解压
专项技术
网络编程
设计模式
UML
常见设计模式
软件工程
多线程编程
线程池
并发,同步
锁
开源框架
Struts:MVC模式实现
Spring:IOC + AOP + 声明式事务
Hibernate:面向对象的数据库管理方式框架
ibatis
web界面引擎:GWT
系统架构
分布式
负载均衡
组网
...
数据结构/算法
数据结构
排序算法
查找算法
算法题
DB编程
sql编程
join,group by,distinct,存储过程,job,数据字典,DB锁
数据库规范
语法,索引失效,软解析,硬解析,备注
数据库优化
执行计划,索引,分区,awr监控工具,表结构设计,OS资源瓶颈(IO,CPU,内存),服务资源瓶颈,网络瓶颈,应用资源瓶颈
其它
回滚段(快照),高水位,Commit频度控制,sysdate使用,统计信息
@关键资源
连接池,并发数,锁,CPU,内存,IO,网络
数据库范式
维优
定位
jvm内存分配与回收机制
jdk命令工具
jconsole,jvisualVM jps jstack jstat jmap
CPU异常,问题定位思路
关注点:堆栈
内存异常,问题定位思路
关注点:GC日志,dump内存镜像
堆栈异常,问题定位思路
关注点:堆栈
宕机,问题定位思路
先看项目真死,还是假死。 真死:服务器会打印崩溃的原因。 假死:就要检查CPU,和内存,看哪边出问题 CPU :分析线程,堆栈。 -找CPU高消耗线程,看在做什么事情 内存:检查GC,分析dump -找内存高消耗对象,在何处初始
eclipse 远程调试技术
优化
Java程序性能优化:让你的Java程序更快、更稳定
第1章 Java性能调优概述
第2章 设计优化
第3章 Java程序优化
第4章 并行程序开发及优化
第5章 JVM调优
第6章 Java性能调优工具
Java性能优化权威指南 [Java performance]
第1章 策略、方法和方法论
第2章 操作系统性能监控
第3章 JVM概览
第4章 JVM性能监控
第5章 Java应用性能分析
第6章 Java应用性能分析技巧
第7章 JVM性能调优入门
第8章 Java应用的基准测试
第9章 多层应用的基准测试
第10章 Web应用的性能调优
第11章 Web Service的性能
第12章 Java持久化及Enterprise Java Bean的性能
工具掌握
linux 环境维护
缺陷库:jira
熟练使用需求和缺陷库管理工具,图表化任务状态.
持续集成:hodson
自动化构建系统,持续集成工具.
UML建模:PowerDesigner
性能分析:jprofiler
成熟使用系统性能分析工具(jprofiler),承担1年现网维优工作.
jvm跟踪:jvisualVM
GC分析:gcviewer
堆栈分析:samurai
内存镜像分析:HeapAnalyzer
压力测试: LoadRunner
负载均衡: nginx
个人职能
工作年限
技术工作年限
管理工作年限
实习
学校、学历
学校专业
技术积累情况
培训经历
实习经历
技术方向
前端
java
Android
项目经验
开发人数
行业/公众
开发时长
项目业务
项目使用技术
技术职能
java技术
java基础
面向对象
关键字
字符串/数组
异常
集合容器
java高级
流
io
nio
内存管理
网络编程
socket
websocket
xmpp
多线程编程
JDBC与Hibernate
设计模式
UML
常见设计模式
软件工程
Java开源
JavaWeb
Servlet与JSP
HTTP/WebService
SOAP与REST
html+CSS+javaScript
后端框架
SSH
SSI/SSM
Maven
前端框架
GWT
EXT
Jquery
模板引擎
Beetl
安全框架
Shiro
日常应用/周边
上传下载
导入导出
压缩解压
爬虫
搜索引擎
大数据
缓存架构
定时器
quartz
java关键特性掌握
泛型
注解
反射
动态代理
jdk反射
cglib反射
线程并发
IO
nio
Java安全
Java对象序列化与RMI
Android技术
Android技术体系
Android开发基础
用户界面
数据存储
网络通信
多媒体
图形图像
Android 高级篇
游戏开发
设备功能
第三方集成
其他
Android框架
Android的快速开发框架 afinal
Android 快速开发框架 ThinkAndroid
Android 极速开发框架 dhroid
混合应用开发框架
HTML5来了-7个混合式移动开发框架 http://www.open-open.com/news/view/993a1
★PhoneGap
CrossApp
Kendo UI
Android UI组件
Android开源项目分类汇总
23CODE android经典开源代码分享
Android UI组件@开源中国
IOS代码库
Activity(31)
下拉刷新(pull-to-refresh)(36)
菜单 (Menu)(97)
位置信息(GPS/Location)(14)
iOS 表单(13)
提醒 (Notification)(44)
iOS 数据库(11)
按钮(Button)(137)
列表(Table)(273)
图像(Image)(297)
滚动视图(ScrollView)(145)
选择器(Picker)(145)
标签(Label)(107)
地图(Map)(67)
导航条(Navigation Bar)(55)
进度条(Progress)(90)
指示器(HUD)(61)
开关(Switch)(20)
滑杆(Slider)(59)
选项卡(Tab Bar)(80)
状态栏(StatusBar)(16)
分段选择(Segment)(34)
网页(Webview)(39)
文字视图(Text)(166)
视图布局(View Layout)(211)
视图切换(View Transition)(228)
弹出视图(Popup View)(170)
手势交互(Gesture)(46)
绘图(Drawing)(52)
动画(Animation)(125)
图表(Charting)(66)
音频声效(Audio)(76)
视频(Video)(33)
网络(Networking)(95)
高级UI组件(Advanced)(207)
键盘(Keyboard)(47)
游戏(Gaming)(45)
支付(Payment)(10)
其他(Others)(693)
前端技术
html5+CSS+javaScript
jquery、jqueryMobile
闭包
js封装
数据结构/算法
数据结构
排序算法
查找算法
算法题
数据库
mysql
oracle
SQL
表关联
分组
聚合
数据库范式
数据库优化
技术周边
操作系统
linux
cat awk
正则表达式
开发方式
行为驱动开发 BDD
测试驱动开发 TDD
junit 单元测试
领域驱动开发 DDD
代码测试比率/测试代码覆盖率
环境部署/持续集成
ant
Maven
自动化构建,测试
维优
定位
优化
工具掌握
网络/安全
《白帽子讲web安全》
网络基础
客户端脚本安全
服务器端应用安全
互联网公司安全运营
技术面试
Java程序员面试笔试宝典
Java程序员面试笔试宝典
上篇面试笔试经验技巧篇
第1章面试官箴言
1.1有道无术,术可求;有术无道,止于术
1.2求精不求全
1.3脚踏实地,培养多种技能
1.4保持空杯心态
1.5职场是能者的舞台
1.6学会“纸上谈兵”
1.7小结
第2章面试心得交流
2.1心态决定一切
2.2假话全不说,真话不全说
2.3走自己的路,让别人去说吧
2.4夯实基础谋出路
2.5书中自有编程法
2.6笔试成绩好,不会被鄙视
2.7不要一厢情愿做公司的
“备胎”
2.8小结
第3章企业面试笔试攻略
3.1互联网企业
3.2网络设备提供商
3.3外企
3.4国企
3.5研究所
3.6创业型企业
3.7如何抉择
下篇面试笔试技术攻克篇
第4章Java基础知识
4.1基本概念
4.1.1Java语言有哪些优点
4.1.2Java与C/C++有什么异同
4.1.3为什么需要publicstaticvoidmain(String[]args)这个方法
4.1.4如何实现在main()方法执行前输出“HelloWorld”
4.1.5Java程序初始化的顺序是怎样的
4.1.6Java中的作用域有哪些
4.1.7一个Java文件中是否可以定义多个类
4.1.8什么是构造函数
4.1.9为什么Java中有些接口没有任何方法
4.1.10Java中的clone方法有什么作用
4.1.11什么是反射机制
4.1.12package有什么作用
4.1.13如何实现类似于C语言中函数指针的功能
4.2面向对象技术
4.2.1面向对象与面向过程有什么区别
4.2.2面向对象有哪些特征
4.2.3面向对象的开发方式有什么优点
4.2.4什么是继承
4.2.5组合和继承有什么区别
4.2.6多态的实现机制是什么
4.2.7重载和覆盖有什么区别
4.2.8抽象类(abstractclass)与接口(interface)有什么异同
4.2.9内部类有哪些
4.2.10如何获取父类的类名
4.2.11this与super有什么区别
4.3关键字
4.3.1变量命名有哪些规则
4.3.2break、continue以及return有什么区别
4.3.3final、finally和finalize有什么区别
4.3.4assert有什么作用
4.3.5static关键字有哪些作用
4.3.6使用switch时有哪些注意事项
4.3.7volatile有什么作用
4.3.8instanceof有什么作用
4.3.9strictfp有什么作用
4.4基本类型与运算
4.4.1Java提供了哪些基本数据类型
4.4.2什么是不可变类
4.4.3值传递与引用传递有哪些区别
4.4.4不同数据类型的转换有哪些规则
4.4.5强制类型转换的注意事项有哪些
4.4.6运算符优先级是什么?
4.4.7Math类中round、ceil和floor方法的功能各是什么
4.4.8++i与i++有什么区别
4.4.9如何实现无符号数的右移操作
4.4.10char型变量中是否可以存储一个中文汉字
4.5字符串与数组
4.5.1字符串创建与存储的机制是什么
4.5.2“==”、equals和hashCode有什么区别
4.5.3String、StringBuffer、StringBuilder和StringTokenizer有什么区别
4.5.4Java中数组是不是对象
4.5.5数组的初始化方式有哪几种
4.5.6length属性与length()方法有什么区别
4.6异常处理
4.6.1finally块中的代码什么时候被执行
4.6.2异常处理的原理是什么
4.6.3运行时异常和普通异常有什么区别
4.7输入输出流
4.7.1JavaIO流的实现机制是什么
4.7.2管理文件和目录的类是什么
4.7.3JavaSocket是什么
4.7.4JavaNIO是什么
4.7.5什么是Java序列化
4.7.6System.out.println()方法使用需要注意哪些问题
4.8Java平台与内存管理
4.8.1为什么说Java是平台独立性语言
4.8.2Java平台与其他语言平台有哪些区别
4.8.3JVM加载class文件的原理机制是什么
4.8.4什么是GC
4.8.5Java是否存在内存泄露问题
4.8.6Java中的堆和栈有什么区别
4.9容器
4.9.1JavaCollections框架是什么
4.9.2什么是迭代器
4.9.3ArrayList、Vector和LinkedList有什么区别
4.9.4HashMap、HashTable、TreeMap和WeakHashMap有哪些区别
4.9.5用自定义作为HashMap或HashTable的key需要注意哪些问题
4.9.6Collection和Collections有什么区别
4.10多线程
4.10.1什么是线程?它与进程有什么区别?为什么要使用多线程
4.10.2同步和异步有什么区别
4.10.3如何实现Java多线程
4.10.4run()方法与start()方法有什么区别
4.10.5多线程同步的实现方法有哪些
4.10.6sleep()方法与wait()方法有什么区别
4.10.7终止线程的方法有哪些
4.10.8synchronized与Lock有什么异同
4.10.9什么是守护线程
4.10.10join()方法的作用是什么
4.11Java数据库操作
4.11.1如何通过JDBC访问数据库
4.11.2JDBC处理事务采用什么方法
4.11.3Class.forName的作用是什么
4.11.4Statement、PreparedStatement和CallableStatement有什么区别
4.11.5getString()方法与getObject()方法有什么区别
4.11.6使用JDBC时需要注意哪些问题
4.11.7什么是JDO
4.11.8JDBC与Hibernate有什么区别
第5章JavaWeb
5.1Servlet与JSP
5.1.1页面请求的工作流程是怎样的
5.1.2HTTP中GET与POST方法有什么区别
5.1.3什么是Servlet
5.1.4doPost()方法与doGet()方法怎么选择
5.1.5什么是Servlet的生命周期
5.1.6JSP有哪些优点
5.1.7JSP与Servlet有何异同
5.1.8如何使用JSP与Servlet实现MVC模型
5.1.9Servlet中forward和redirect有什么区别
5.1.10JSP的内置对象有哪些
5.1.11request对象主要有哪些方法
5.1.12JSP有哪些动作
5.1.13JSP中include指令和include动作有什么区别
5.1.14会话跟踪技术有哪些
5.1.15Web开发中如何指定字符串的编码
5.1.16什么是Ajax
5.1.17cookie和session有什么区别
5.2J2EE与EJB
5.2.1什么是J2EE
5.2.2J2EE中常用的术语有哪些
5.2.3EJB有哪些不同的类别
5.2.4EJB与JavaBean有什么异同
5.2.5EJB有哪些生命周期
5.2.6EJB的角色有哪几种
5.2.7EJB的开发流程是怎样的
5.2.8EJB3.0与EJB2.0有哪些不同之处
5.2.9EJB容器有哪些作用
5.2.10EJB规范规定EJB中禁止的操作有哪些
5.2.11Web服务器与Web应用服务器有什么区别
5.2.12什么是WebService
5.2.13SOAP与REST有什么区别
5.2.14什么是XML
5.2.15数据库连接池的工作机制是怎样的
5.2.16J2EE开发有哪些调优的方法
5.3框架
5.3.1什么是Struts框架
5.3.2Struts框架响应客户请求的工作流程是什么
5.3.3Struts框架的数据验证可分为几种类型
5.3.4FormBean的表单验证流程是什么
5.3.5在Struts配置文件中元素包含哪些属性和子元
5.3.6ActionFormBean的作用有哪些
5.3.7ActionForm的执行步骤有哪些
5.3.8forward与global-forward有什么区别
5.3.9Struts如何实现国际化
5.3.10Struts1与Struts2有哪些区别
5.3.11什么是IoC
5.3.12什么是AOP
5.3.13什么是Spring框架
5.3.14什么是Hibernate
5.3.15什么是Hibernate的二级缓存
5.3.16Hibernate中session的update()和saveOrUpdate()、load()和get()有什么区别
5.3.17Hibernate有哪些主键生成策略
5.3.18如何实现分页机制
5.3.19什么是SSH
第6章数据库原理
6.1SQL语言的功能有哪些
6.2内连接与外连接有什么区别
6.3什么是事务
6.4什么是存储过程?它与函数有什么区别与联系
6.5各种范式有什么区别
6.6什么是触发器
6.7什么是游标
6.8如果数据库日志满了,会出现什么情况
6.9union和unionall有什么区别
6.10什么是视图
第7章设计模式
7.1什么是单例模式
7.2什么是工厂模式
7.3什么是适配器模式
7.4什么是观察者模式
第8章数据结构与算法
8.1链表
8.1.1如何实现单链表的增删操作
8.1.2如何从链表中删除重复数据
8.1.3如何找出单链表中的倒数第k个元素
8.1.4如何实现链表的反转
8.1.5如何从尾到头输出单链表
8.1.6如何寻找单链表的中间结点
8.1.7如何检测一个链表是否有环
8.1.8如何在不知道头指针的情况下删除指定结点
8.1.9如何判断两个链表是否相交
8.2栈与队列
8.2.1栈与队列有哪些区别
8.2.2如何实现栈
8.2.3如何用O(1)的时间复杂度求栈中最小元素
8.2.4如何实现队列
8.2.5如何用两个栈模拟队列操作
8.3排序
8.3.1如何进行选择排序
8.3.2如何进行插入排序
8.3.3如何进行冒泡排序
8.3.4如何进行归并排序
8.3.5如何进行快速排序
8.3.6如何进行希尔排序
8.3.7如何进行堆排序
8.3.8各种排序算法有什么优劣
8.4位运算
8.4.1如何用移位操作实现乘法运算
8.4.2如何判断一个数是否为2的n次方
8.4.3如何求二进制数中1的个数
8.5数组
8.5.1如何寻找数组中的最小值与最大值
8.5.2如何找出数组中第二大的数
8.5.3如何求最大子数组之和
8.5.4如何找出数组中重复元素最多的数
8.5.5如何求数组中两两相加等于20的组合种数
8.5.6如何把一个数组循环右移k位
8.5.7如何找出数组中第k个最小的数
8.5.8如何找出数组中只出现次的数字
8.5.9如何找出数组中唯一的重复元素
8.5.10如何用递归方法求一个整数数组的最大元素
8.5.11如何求数对之差的最大值
8.5.12如何求绝对值最小的数
8.5.13如何求数组中两个元素的最小距离
8.5.14如何求指定数字在数组中第一次出现的位置
8.5.15如何对数组的两个子有序段进行合并
8.5.16如何计算两个有序整型数组的交集
8.5.17如何判断一个数组中数值是否连续相邻
8.5.18如何求解数组中反序对的个数
8.5.19如何求解最小三元组距离
8.6字符串
8.6.1如何实现字符串的反转
8.6.2如何判断两个字符串是否由相同的字符组成
8.6.3如何删除字符串中重复的字符
8.6.4如何统计一行字符中有多少个单词
8.6.5如何按要求打印数组的排列情况
8.6.6如何输出字符串的所有组合
8.7二叉树
8.7.1二叉树基本概念
8.7.2如何实现二叉排序树
8.7.3如何层序遍历二叉树
8.7.4已知先序遍历和中序遍历,如何求后序遍历
8.7.5如何求二叉树中结点的最大距离
8.8其他
8.8.1如何消除嵌套的括号
8.8.2如何不使用比较运算就可以求出两个数的最大值与最小值
第9章海量数据处理
9.1问题分析
9.2基本方法
9.3经典实例分析
9.3.1topK问题
9.3.2重复问题
9.3.3排序问题
附录
附录A软件企业Java笔试真题1
附录B软件企业Java笔试真题2
附录C软件企业Java笔试真题3
附录D求职有用网站及QQ群
一览表
Java程序员面试宝典(第三版)
第1部分 求职过程
古人云:凡事预则立,不预则废。机会都是垂青有准备的人。为了得到一份满意的工作,求职者一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事情做完,即便有计划外的事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
第1章 应聘求职
每年的9月到次年的1月,都是应届毕业生求职、在职人员跳槽的高峰期。对于即将成为程序员的应届毕业生们,在求职过程中怎样确定目标公司和目标职位?对于已经是程序员的跳槽大军,是按照技术路线发展自己的职业生涯,还是走向管理岗位继续自己的职业道路,或者是改变自己的发展轨迹?在求职过程中要注意哪些细节?这些都是求职者所关心的话题。
1.1 应聘渠道
1.2 应聘流程
第2章 简历书写
据统计,80%的简历都是不合格的。不少人事管理者抱怨收到的许多简历在格式上很糟糕。简历应该如何做到在格式上简洁明了,重点突出?求职信应该如何有足够的内容推销自己?如何控制长度,言简意赅?相信读了本章你会对简历的撰写有一个新的认识。
2.1 书写简历注意事项
2.2 简历模板
第3章 求职五步曲
笔试、电话面试和面试是顺利求职的三个过程。三关全过才能顺利签约,只要有一关没能通过,就会被“刷”掉。除此之外,签约本身又何尝不是一个重要的考试?涉及你的未来、人生、行业甚至家庭。当然有签约就有可能会有违约,真希望你们不必走第五步,但是这个世界毕竟不是童话。
3.1 笔试
3.2 电话面试
3.3 面试
3.4 签约
3.5 违约
第4章 职业生涯发展规划
在一般情况下,我们工作一年之后,对自己的喜好及擅长都有了更加深刻的了解,这时会有较为明确的职业发展规划。
4.1 缺乏工作经验的应届毕业生
4.2 更换工作的程序员们
4.3 快乐地工作
第2部分 Java程序设计
本部分主要以Java设计语言为基础,通过大量实际的例子分析各大公司Java面试题目,从技术上分析面试题的内涵。一般公司的面试题都是两套——C++或Java,面试者可以选择。
第5章 Java程序设计基本概念
对于一个求职者或者应届毕业生来说,公司除了对项目经验有所问询之外,最好的考试办法就是检查基本功,包括编程风格,以及对赋值语句、递增语句、类型转换、数据交换等程序设计基本概念的理解。当然,在考试之前最好对自己所掌握的程序概念知识有所了解,尤其是对各种细致的考点要加以重视。本章考题来自真实的笔试资料,希望读者先不要看答案,自我解答后再与答案加以对比,找出自己的不足。
5.1 JVM
5.2 i++
5.3 类型转换
5.4 程序结构
5.5 运算符
5.6 异常
5.7 反射
第6章 传递与引用
Java语言明确说明取消了指针,因为指针往往是在带来方便的同时导致代码不安全的根源,而且还会使程序变得非常复杂和难以理解,滥用指针写成的代码不亚于使用早已“臭名昭著”的GOTO语句。Java放弃指针的概念绝对是极其明智的。但这只是在Java语言中没有明确的指针定义,实质上,每一个new语句返回的都是一个指针的引用,只不过在大多数时候Java不用关心如何操作这个“指针”,更不用像在操作C++的指针那样胆战心惊,唯一要多注意的是在给函数传递对象的时候。
6.1 传值与传引用
6.2 静态变量与私有变量
6.3 输入/输出流
6.4 序列化
第7章 循环、条件、概率
递归过程的执行总是一个过程体未执行完,就带着本次执行的结果又进入另一轮过程体的执行……如此反复,不断深入,直到某次过程的执行遇到终止递归调用的条件成立时,则不再深入,而执行本次的过程体余下的部分,然后又返回到上一次调用的过程体中,执行其余下的部分……如此反复,直到回到起始位置上,才最终结束整个递归过程的执行,得到相应的执行结果。递归过程的程序设计的核心就是参照这种执行流程,设计出一种适合“逐步深入,而后又逐步返回”的递归调用模型,以解决实际的面试例题。
7.1 典型递归问题
7.2 循环与条件
第8章 Java内存管理
内存管理太重要了,花费多少口舌介绍它都不过分。笔者曾经见到这样一句话:“C++程序员觉得内存管理太重要了,所以一定要自己进行管理;Java/C#程序员觉得内存管理太重要了,所以一定不能自己去管理。”从某种意义上说,两者都是对的。面试中内存管理涉及堆、栈、哈希表、内存泄漏等方面。
8.1 垃圾收集
8.2 内存管理
8.3 clone
第9章 面向对象
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看做是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为“程序=算法+数据”;面向对象编程语言为“程序=对象+消息”。
9.1 面向对象的基本概念
9.2 类和对象
9.3 嵌套类
9.4 集合类
9.5 构造函数和析构函数
9.6 复制构造函数和赋值函数
9.7 多态的概念
第10章 继承与接口
接口在实际语言,如Delphi、Java、C++等中,都有广义和狭义之分。
10.1 基础知识
10.2 Super
10.3 this
10.4 不能继承的情况
10.5 抽象类与接口
第3部分 数据结构和设计模式
本部分主要介绍求职面试过程中出现的第二个重要的板块——数据结构,包括字符串的使用、堆、栈、排序方法等。此外,随着外企研发机构大量迁入我国,外企针对软件工程知识的考核,包括设计模式、UML、敏捷软件开发,以及.NET技术和完全面向对象语言C#的面试题目将会有增无减,今后设计模式在面试中的比重会进一步提高。
第11章 数据结构基础
面试时间一般有两个小时,其中至少有20~30分钟左右是用来回答数据结构相关的问题,链表栈、堆、数组的排序和逆置是笔试必考的内容。
11.1 堆栈
11.2 链表、哈希表
11.3 树、图
11.4 排序基础知识
第12章 字符串、数组、范型
求职者在进行笔试时,几乎没有不考字符串、数组和范型的。字符串也是一种相对简单的数据结构,结合指针,容易多次引起面试官反复发问。笔者曾不止一次在笔试或面试时遇到字符串的试题。事实上,字符串也是一个考验程序员编程规范和编程习惯的重要考点。范型是Java SE 1.5的新特型,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口和方法的创建中,分别称为范型类、泛型接口、泛型方法。Java语言引入范型的好处是安全简单。Java范型编程也是Java程序员面试的热点之一。求职者不能忽视这些细节,因为这些细节会体现你对操作系统、软件工程、边界内存处理等方面知识的掌控能力。
12.1 字符串基础问题
12.2 StringBuffer
12.3 正则表达式
12.4 数字流和数组
12.5 字符串其他问题
12.6 范型与容器
第13章 设计模式
地上本没有路,走的人多了,也就成了路。设计模式如同此理,它是经验的传承,并不成体系;它是被前人发现、经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。
13.1 UML
13.2 常见设计模式
13.3 软件工程
第4部分 操作系统、数据库、网络
本部分主要介绍求职面试过程中出现的第三个重要的板块——操作系统、数据库、网络知识。作为一名程序员,尤其是系统管理方面的程序员,对这几部分有深刻的理解和领悟是相当重要的。
第14章 操作系统
操作系统面试例题主要涉及进程、线程、内存管理、垃圾回收,以及缓存等方面。
14.1 基础知识
14.2 进程
14.3 线程与串行化
第15章 数据库和SQL语言
数据库面试例题主要涉及范式、事物、存储过程、SQL语言及索引等方面。
15.1 数据库理论问题
15.2 SQL语言常见问题
第16章 计算机网络及分布式系统
网络面试例题主要涉及局域网、广域网和IP管理等方面。
16.1 网络结构
16.2 TCP/IP
16.3 网络其他问题
第5部分 Java开源
EJB组件曾经被认为是一个重量级的组件。EJB 3.0规范的重要目标就是简化EJB的开发,提供一个相对轻量级的组件方案。Spring基于轻量内核,然后通过集成第三方的服务器来提供完整的架构。
第17章 J2EE技术
从整体上讲,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术在不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的。
Android高薪之路-Android程序员面试宝典 @百科
第1章 Android入门 1
1.1 关于Android的非技术问题 1
1.1.1 为什么看好Android 1
1.1.2 以前是否从事过Android的工作,做过哪些工作 3
1.1.3 你做的最复杂的界面是什么 3
1.1.4 如何解决Android学习中遇到的难题 3
1.1.5 Android只能在手机或其他移动设备上使用吗 4
1.2 Android的基本概念 4
1.2.1 Android的特点都有哪些 4
1.2.2 MVC模式 5
1.2.3 Android的系统构架 6
1.3 开发Android应用程序 7
1.3.1 搭建Android开发环境 7
1.3.2 Android开发环境的使用 8
第2章 布局 10
2.1 Android中的布局 10
2.2 布局使用技巧 11
2.2.1 FrameLayout布局 12
2.2.2 LinearLayout布局 13
2.2.3 RelativeLayout布局 16
2.2.4 TableLayout布局 19
2.2.5 AbsoluteLayout布局 20
2.2.6 将布局存成图像 21
2.2.7 设置渐变背景色 22
2.3 布局属性 22
2.3.1 android:layout_weight属性 23
2.3.2 android:padding属性和android:layout_margin属性 25
2.3.3 android:layout_gravity属性和android:gravity属性 27
2.4 高级布局技术 29
第3章 组件 30
3.1 组件的属性 30
3.2 文本组件 32
3.3 按钮组件 36
3.4 图像组件 38
3.5 进度组件 41
3.6 列表组件 42
3.7 容器组件 45
3.8 自定义组件 46
3.9 四大应用程序组件 54
3.9.1 Android中的窗口:Activity 54
3.9.2 广播接收器:Broadcast Receiver 60
3.9.3 服务(Service) 64
3.9.4 内容提供者(Content Provider) 68
第4章 对话框、信息提示和菜单 73
4.1 对话框 73
4.2 信息提示 79
4.2.1 Toast信息框 79
4.2.2 通知(Notification) 81
4.3 菜单 83
第5章 文件存储 87
5.1 SharedPreferences 87
5.2 流文件 95
5.3 XML存储 96
5.4 JSON存储 100
第6章 数据库 101
6.1 SQLite基础知识 101
6.2 SQLite 函数 102
6.2.1 核心函数 102
6.2.2 日期和时间函数 105
6.2.3 聚合函数 108
6.3 在Android中使用SQLite 109
6.4 面向对象数据库:db4o 112
第7章 网络与加密 116
7.1 客户端Socket 116
7.2 服务端Socket 126
7.3 非阻塞I/O 130
7.4 WebView控件 138
7.5 HTTP和HTTPS 143
7.6 加密技术 150
第8章 蓝牙与Wi-Fi 154
8.1 蓝牙 154
8.2 Wi-Fi 160
第9章 电话、短信和联系人 163
9.1 来电和回电 163
9.2 短信 174
9.3 彩信 181
9.4 联系人 192
第10章 多媒体技术 195
10.1 音频 195
10.2 视频 197
10.3 摄像头 199
10.4 铃声 205
第11章 2D绘图与动画技术 209
11.1 绘制基本图形 209
11.2 图像特效 214
11.3 路径 215
11.4 帧(Frame)动画 220
11.5 补间(Tween)动画 222
第12章 OpenGL ES 229
12.1 OpenGL ES简介 229
12.2 理解3D坐标系:照相机原理 231
12.3 如何使用OpenGL ES绘制图形 232
12.4 绘制2D图形 235
12.5 绘制3D图形 240
12.6 光照效果 242
第13章 Android系统的资源 244
13.1 资源的基础问题 244
13.2 本地化 248
13.3 字符串资源 251
13.4 布局资源 254
13.5 图像资源 255
13.6 其他资源 265
第14章 其他面试例题 270
14.1 NDK编程 270
14.2 传感器 274
14.3 语音识别技术 277
14.4 Google地图与GPS 278
14.5 桌面插件 280
14.6 输入法开发 282
14.7 测试驱动开发 287
14.8 性能优化 292