内部java工程师知识体系
知识体系
JVM:类装载初始化过程、内存模型、垃圾回收机制,参数等等。
java的数据结构及其实现原理:ArrayList和LinkedList的区别(性能和操作的算法复杂度),HashMap/ConcurrenHashMap等,需要看过其源码才知道。
多线程:同步,锁,ThreadLocal等
JDK:java.lang、java.util、java.io、java.nio、java.net、javax.sql,最好了解源码。
常用第三方包:commons-lang、commons-collections、commons-logging,最好了解源码。
Spring:Spring依赖注入,AOP机制,源码包里面org.springframework.context、org.springframework.beans、org.springframework.core,org.springframework.jdbc可以了解下。
MVC(模型-视图-控制器)、ROA(面向资源的架构)
Mysql:数据库基础知识,table的设计,索引的设计,分区分表方案的设计,高效SQL语句的编写,JDBC、mysql-connector的机制(遇到喜欢虐人的面试官可能会问),HA方案,Mysql的几种引擎(MyISAM,Innodb),锁机制(悲观锁/乐观锁),事务ACID等
前端技术:http协议(如状态码,http 1.0,1.1的区别),html,javascript(闭包,面向对象啥的),jquery,前端工程师需要掌握网站前端框架的设计,以及常用的一些网站加速优化技巧(如js/css压缩等),Servlet及其API、JSP基础,高级点的如长连接,BigPipe等。
服务器:Nginx/Resin/Tomcat的基本配置,如果你用过,有的面试官喜欢问其内部原理和源码实现,如一些经典的网络服务器设计模式,如Reactor模式和NIO。
memcached:memcached的基础概念,memcache协议,一致性hash算法,使用场景,内部实现细节如存储模型和线程模型,监控与调优
Linux:Linux基本操作和基本命令,基础Shell脚本的编写。
Eclipse:使用eclipse进行开发,掌握常用插件的安装和使用方法以及常用快捷键等
SVN:svn相关命令、工具以及IDE插件都应该能够熟练掌握,并灵活运用。
Maven:maven的基础概念和用途,maven环境的搭建、配置,基础maven命令的使用,pom文件编写,高级的如私人仓库的搭建。
Hudson:持续集成工具的使用。
搜索引擎和爬虫系统:lucene,httpparser,jsoup等
分布式:ACID,CAP,BASE理论