市面上,有很多Java的学习图书,大部分图书的内容都在讲解着Java最为基础的部分,有些稍微不正规的书中,可能还会存在些许错误的内容,而且网上也有千奇百怪的Java面试题,很多也是着重在Java基础上。实际上应聘Java高级开发工程师的话,这些基础知识的存货是远远不够的,除此之外,必须懂得算法,数据结构,操作系统等知识。由于内容涉及较多,所以不讲解具体的技术,而是从企业招聘Java高级开发工程师的面试题进行了整理,希望对大家有帮助。
一、Java基础
1、面向对象
- 掌握面向对象的核心思想并深度理解
- 掌握并理解封装继承多态相关技术
2、I/O
- 掌握字节流FileInputStream,FileOutputStream和字符流FileWriter,OutputStreamWriter并熟练运用
- 掌握File类型的构造,获取和创建删除
3、多线程
- 掌握Thread类型
- 掌握多线程的程序运行原理及并发并行
4、异常
- 掌握异常的工作原理并且掌握异常的处理方式
二、Java虚拟机
1、JVM内存区域划分
- 掌握JVM内存参数设置及调优
- 掌握程序计数器、堆、虚拟机栈、本地方法栈、方法区(Java8已移除)、元空间(Java8新增)的作用及基本原理
2、类加载
- 掌握类的加载阶段:加载、链接(验证、准备、解析)初始化、使用、卸载。
- 掌握类加载器分类及其应用程序类加载器、自定义加载器。
三、J2EE
- 掌握Servlet内置对象、动作及相关特点和工作原理
- 掌握Spring框架的IOC和AOP实现原理(反射和动态代理)
- 至少掌握一个MVC框架(Spring MVC)的工作原理,并熟练运用。
四、数据结构和算法
- 掌握线性表和树的特点并熟练运用
- 掌握常用的排序和查找算法:插入排序(希尔排序)、选择排序(堆排序)、交换排序(冒泡排序)顺序查找、二分查找、哈希查找
- 熟练运用排序和查找思想解决编程问题
五、数据库
- 掌握SQL语句的编写
- 掌握数据库的优化(SQL层面和表设计层面)
- 至少掌握一款数据库产品
- 熟悉高并发、大数据情况下的数据库开发。
六、Web技术
- 掌握AJAX的工作原理。
- 至少熟悉一款JS框架(比如JQuery)
七、Linux
- 熟练运用Linux常见命令
- 熟悉Linux操作系统基本概念及特点
八、正则表达式
- 掌握常见正则表达式