架构师面试问题指导性框架Word文件下载.docx
- 文档编号:16351441
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:9
- 大小:40.27KB
架构师面试问题指导性框架Word文件下载.docx
《架构师面试问题指导性框架Word文件下载.docx》由会员分享,可在线阅读,更多相关《架构师面试问题指导性框架Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
在HashMap或HashSet中,作为杂凑值,以提高查找的性能。
Object.hashCode实际上返回的是对象的引用地址,但子类可以覆盖此方法,实现不同的杂凑算法。
1.5.hashCode和equals方法的关系
如果两个对象equals相等,那么hashCode必须相等。
反之,则不一定:
hashCode相等,可能equals不等。
但这个概率不能太高,否则将增加HashMap的冲突可能性,而降低查找的效率。
1.6.如何停止一个线程?
设置一个标记,让线程自行停止。
必要时,主线程执行join方法等待子线程完全退出。
publicclassTestThread{
privatebooleanexit=false;
privatevoidgo()throwsException{
Threadthread=newThread(newMyRunnable(),"
my_thread"
);
System.out.println("
PressEntertoexit..."
thread.start();
System.in.read();
exit=true;
thread.join();
}
privateclassMyRunnableimplementsRunnable{
publicvoidrun(){
for(inti=1;
!
exit;
i++){
System.out.println(Thread.currentThread().getName()+"
:
"
+i);
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
publicstaticvoidmain(String[]args)throwsException{
newTestThread().go();
}
事实上,Thread自己有interrupted标志,可以通过Thread.interrupted()或某些方法的InterruptedException来捕获中断标志。
程序可改进为:
privatevoidgo()throwsException{
……
thread.interrupt();
return;
1.7.Thread.setDeamon()的含义?
一个Daemon线程是一个在背景执行服务的线程,例如网络服务器倾听连接端口的服务、隐藏的系统线程如垃圾收集线程或其它JVM建立的线程,如果所有的非Daemon的线程都结束了,则Daemon线程自动就会终止。
Thread.setDaemon(true)就是设置一个线程为daemon线程。
该方法必须在Thread.start()之前执行。
并且daemon线程创建的子线程,自动成为daemon线程。
1.8.ClassLoader的功能和工作模式?
ClassLoader的功能是读取二进制码,生成Class对象。
ClassLoader使用的是委托模式(delegation模式)。
ClassLoader呈树状结构,每个结点代表一个ClassLoader。
一般来说,ClassLoader查找一个类时,会先询问parentClassLoader,如果找不到,才会在自身查找。
下面是JavaEEClassLoader的常见结构:
(SystemClassLoader之前其实省略了一个BootstrapClassLoader,用来装载jre/lib下的JDK基本类)
1.9.列举几个JavaCollection类库中的常用类,试简述其类结构。
Interface
Implementation
Historical
Set
HashSet
TreeSet
List
ArrayList
LinkedList
Vector
Stack
Map
HashMap
TreeMap
Hashtable
Properties
还有包装器:
Unmodifiablecollections
Synchronizedcollections
Singletoncollections
等。
1.10.Input/OutputStream和Reader/Writer有何区别?
何为字符,何为字节?
1.11.如何在字符流和字节流之间转换?
1.12.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<
T>
✧新的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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 架构 面试 问题 指导性 框架