架构师面试问题指导性框架.docx
《架构师面试问题指导性框架.docx》由会员分享,可在线阅读,更多相关《架构师面试问题指导性框架.docx(8页珍藏版)》请在冰豆网上搜索。
架构师面试问题指导性框架
架构师面试问题指导性框架
1.Java基础问题
1.1.所有Java类的基类是什么
1.2.类中有哪些方法(说出三个)
.");
();
exit=true;
();
}
privateclassMyRunnableimplementsRunnable{
publicvoidrun(){
for(inti=1;!
exit;i++){
+":
"+i);
try{
(1000);
}catch(InterruptedExceptione){
}
}
}
}
publicstaticvoidmain(String[]args)throwsException{
newTestThread().go();
}
}
事实上,Thread自己有interrupted标志,可以通过()或某些方法的InterruptedException来捕获中断标志。
程序可改进为:
publicclassTestThread{
privatebooleanexit=false;
privatevoidgo()throwsException{
……
exit=true;
();
();
}
privateclassMyRunnableimplementsRunnable{
publicvoidrun(){
for(inti=1;!
exit;i++){
+":
"+i);
try{
(1000);
}catch(InterruptedExceptione){
return;
}
}
}
}
……
}
1.3.()的含义
一个Daemon线程是一个在背景执行服务的线程,例如网络服务器倾听连接端口的服务、隐藏的系统线程如垃圾收集线程或其它JVM建立的线程,如果所有的非Daemon的线程都结束了,则Daemon线程自动就会终止。
(true)就是设置一个线程为daemon线程。
该方法必须在()之前执行。
并且daemon线程创建的子线程,自动成为daemon线程。
1.4.ClassLoader的功能和工作模式
ClassLoader的功能是读取二进制码,生成Class对象。
ClassLoader使用的是委托模式(delegation模式)。
ClassLoader呈树状结构,每个结点代表一个ClassLoader。
一般来说,ClassLoader查找一个类时,会先询问parentClassLoader,如果找不到,才会在自身查找。
下面是JavaEEClassLoader的常见结构:
(SystemClassLoader之前其实省略了一个BootstrapClassLoader,用来装载jre/lib下的JDK基本类)
1.5.列举几个JavaCollection类库中的常用类,试简述其类结构。
Interface
Implementation
Historical
Set
HashSet
TreeSet
List
ArrayList
LinkedList
VectorStack
Map
HashMap
TreeMap
HashtableProperties
还有包装器:
Unmodifiablecollections
Synchronizedcollections
Singletoncollections
等。
1.6.Input/OutputStream和Reader/Writer有何区别何为字符,何为字节
1.7.如何在字符流和字节流之间转换
1.8.GC垃圾收集是什么意思怎样的对象会被收集
2.JavaEE的问题
2.1.Serlvet/JSP相关
2.1.1.JSP的工作原理
JSP会先转换成Servlet类,然后再执行。
2.1.2.Servlet中的session工作原理
通过JSESSIONID来索引session的数据。
通常将JSESSIONID保存在cookie中,但也可以编码到URL中。
Session的数据是保存在服务端的。
具体的实现方式由应用服务器决定。
2.1.3.WEB层如何实现Cluster
关键是解决session的问题。
可以通过stickyserver的方式,也可以通过session复制的机制。
如果Web应用不使用session(无状态的),则可以将请求随机分发到任何一台对等的应用服务器上。
2.2.EJB相关
2.2.1.EJB的类型
StatelessSessionBeans、StatefulSessionBeans、EntityBeans、Message-DrivenBeans。
2.2.2.EJB的工作原理
SessionBean和EntityBean通过Stub来实现Remote和Local调用。
调用时,可以插入特殊的逻辑:
如安全、事务管理。
Message-DrivenBean通过监听JMS对象来触发。
同样支持安全、事务。
2.2.3.EJB的应用领域
StatelessSessionBean和Message-DrivenBean目前用得比较多。
前者常用于远程/本地访问业务逻辑;后者常用于异步调用。
由于使用了Spring这样的轻量框架,EJB的应用越来越少。
2.3.JMS相关
2.3.1.JMS的模式
Queue模式:
point-to-point(点对点),一头发消息,一头收消息。
消息收掉就没了,两个接收者不能收到同一个消息。
Topic模式:
publish-subscriber(发布、订阅),一个人发消息,多个订阅topic的人接收消息。
多个接收者能够收到同一个topic中的同一个消息。
2.4.JDBC/JTA/JTS相关
2.4.1.用JDBC怎样从数据库中查询一条记录
2.4.2.Transaction有哪几种隔离级别(IsolationLevel)
数据在修改过程中的中间状态对其它事务的可见程度,和其它事务修改数据的中间状态对本事务的可见性。
1.READUNCOMMITTED--Dirtyreads,non-repeatablereads,andphantomreadsareallallowed;
2.READCOMMITTED--Dirtyreadsareprevented;non-repeatablereadsandphantomreadsareallowed.;
3.REPEATABLEREAD--Dirtyreadsandnon-repeatablereadsareprevented;phantomreadsareallowed;
4.SERIALIZABLE--Dirtyreads,non-repeatablereads,andphantomreadsareallprevented;
Oracle支持两种:
READCOMMITTED(默认)、SERIALIZABLE。
2.4.3.Globaltransaction的原理是什么
两阶段提交。
不仅可对数据库,也可对其它资源如JMS进行transaction操作。
2.5.WebService相关
2.5.1.简述WebService是怎么实现的
说出soap、wsdl之类的就可以了。
2.6.Ant/maven的知识
2.6.1.用过ant或maven吗它们是什么有什么特点(或好处)
3.开源软件的问题
3.1.Spring相关
3.1.1.Spring的核心理念是什么
核心是IoC(InversionofControl、反转控制)或DI(DependencyInjection、依赖注入)。
通过IoC或DJ的方式来装配对象,解除对象与对象之间的耦合性,从而简化应用的开发、测试过程。
和IoC或DJ密切相关的,还有AOP(AspectOrientedProgramming、面向切面的编程)。
有了IoC,就很容易实现AOP。
通过AOP,可以将额外的功能透明地附着于对象上,而不会影响到使用对象的代码。
通过此种机制,就可实现很多功能:
远程、异步调用、Transaction、Security、Intercepter……
3.2.iBatis/hibernate相关
3.2.1.简介hibernate和(或)ibatis,及它们的异同、优缺点。
3.3.其它软件
3.3.1.Web层框架
Webwork、Struts、Tapestry、Turbine、SpringMVC……
3.3.2.数据层框架
Hibernate、iBatis、Torque、OJB……
3.3.3.普通工具类
Jakartacommons……
模板工具:
Velocity、Freemarker……
3.3.4.测试框架
Junit、Testng、Cactus、HttpUnit……
3.3.5.Service框架
Spring、HiveMind、Avalon……
3.3.6.……
4.OOA/OOD
4.1.OOD的原则
4.1.1.类A依赖类B,会产生什么问题
A的扩展性会有问题:
如果希望扩展A,使之操作另一个对象C,则必须修改A的代码。
A的稳定性会有问题:
对B的修改将会影响到A(可能需要重编译A)。
4.1.2.怎样解除这种耦合
使用接口:
A依赖接口I,B实现接口I。
使用接口和适配器(如果B不能实现接口I):
A依赖接口I,适配器B'实现接口I,并且内部依赖B。
4.2.设计模式
4.2.1.列举一两个设计模式,举例说明其用途。
4.2.2.简述M-V-C模式解决了什么问题
5.项目相关
5.1.项目相关的技术问题
6.对新技术敏感度
6.1.Java5语言的新特性对我们有什么帮助
Generics
新的for语法
Autoboxing/unboxing
Enum枚举
可变的参数
StaticImport导入常量和静态方法
Annotations(Metadata)
7.其他问题
7.1.职业发展道路愿意做技术吗愿意做编码吗
7.2.愿意在杭州长期发展吗
8.其它方面的基础知识
8.1.操作系统相关问题,如虚拟内存管理
8.2.数据结构相关:
如队列应用
8.3.网络相关:
如TCP/IP协议基础问题
8.4.http协议以及相关内容
8.5.对uml以及业务健模的考察
8.6.群集技术
8.7.版本管理:
svn/cvs