前言
既然要成为Java架构师,首先你要是一个高级Java攻城尸,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;
池技术,什么对象池,连接池,线程池...:;Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案Java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;Java多线程同步异步;
总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。
既然目标是Java架构师我们就来测试一下自己的硬实力?
Java基础部分
1、请列举至少3个JDK安装目录下的可执行程序(javac),并列举几个常用的命令行参数
2、Object类(或子类)的finalize()方法在什么情况下被调用?
3、线程状态,BLOCKED和WAITING有什么区别
4、请简单阐述一下Socket通讯原理,以及Socket基于TCP和UDP协议实现的优缺点
5、Collection和Collections有什么区别?
6、JVM内存模型
技术深度
1、描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2、Http协议中返回状态200、404、302、301、500、502各式什么含义?
3、在HTML中如何包含JavaScript?
4、Java线程池的实现原理,keepAliveTime等参数的作用。
5、一致性Hash算法
6、IO和NIO的区别,NIO优点
技术框架
1、Struts的Action是不是线程安全的?如果不是,有什么方法可以保证Action的线程安全,如果是,请说明原因。
2、Spring的工作机制以及为什么要使用?
3、MVC是什么?请简述在WEB程序中MVC如何实现?
4、什么是高内聚低耦合,请举例子如何实现
5、mybaits与Hibernate对比有哪些不同点
6、什么情况用接口,什么情况用消息
实战能力
1、有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。
2、开发中有没有遇到什么技术问题?如何解决的
3、如何实现一个秒杀系统,保证只有几位用户能买到某件商品。
软能力
1、如何学习一项新技术,比如如何学习Java的,重点学习什么
2、有关注哪些新的技术
3、和同事的设计思路不一样怎么处理
4、职业规划是什么?短期,长期目标是什么
5、能介绍下从工作到现在自己的成长在那里
总结
架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。
程序员应该需要都有自知之明,会就是会,不会就是不会,互联网发展迅速的时代,只能跟上时代的进步,才不会被淘汰。
获取答案
不只是答案,带详尽的功能实战,面试题其实是整理于此,不限于上面几十道。