`

Java面试准备

阅读更多
这些题目为找工作前准备,但是面试的时候基本上没用上。
 
1.Java多态表现:重写
2.多线程共享数据:多线程共享数据时,可以将需要共享的数据封装成一个对象,将每个线程对该数据对象的操作分别定义类(该类实现Runnable接口,并提供参数为共享数据对象的构造方法),然后再调用是直接使用new Thread(实现Runnable接口类的实例)
小知识点:多个内部内如何共享数据?可以将Runnable设置成内部类,1. 数据设置成外部类的成员变量(代码如下图)2.  将共享的数据封装起来,然后逐个传递给Runnable对象。3. 共享数据设置成外部类的成员变量,Runnable写成内部类,在外部类增加带有synchronized关键字的成员方法。


 
3. 接口可以继承接口,抽象类可以继承具体类
4. hibernate缓存机制ehcache,在sessionFactory中的hibernateProperties配置信息中指定开启二级缓存,然后在对应实体类的配置文件中指定开启缓存,就实现了开启了hibernate的缓存机制();
5. 请你大概介绍下做过的项目和用到的技术,目前来说印象最深的是模拟电子商务平台,这个项目除了美工外,其他从前台的脚本编写和数据展示,到后台业务逻辑处理,与数据库进行交互操作均为独立完成。用到的技术:前台主要是ognl和JS和JSTL,MVC前端控制器为Struts2,bean的创建和销毁,事务处理,缓存主要交由Spring来控制,数据库连接工具为hibernate,全文搜索使用的技术为compass,也交由Spring容器控制。
6. 好,请你介绍下MVC模式:MVC是JavaEE开发中常用的一种分层模式,一种软件设计典范,即把用户的输入、处理和输入按照M,V,C的方式进行分离,用于将业务逻辑和数据显示分离,分为Model,View和Controller层,其中Model层主要负责业务的处理,这里面可以编写业务处理的实现算法,以及进行数据库操作(值得一提的是现在的数据操作一般也业务处理分离开来,数据操作作为单独的一层,业务处理为一层,这就是后台的分层模式了),Controller层主要负责对请求的转发和处理,View即为表现层(jsp,freemarker等)
7. 请你讲一下权限是如何实现的?关于权限这里,按照部门和用户等级划分的,不同部门的人有不同的权限,不同等级的人也有不同的权限,因为同一部门的人也可以有不同的级别,比如说经理、普通员工。
8. LRU最近最少使用算法;
9. 说一下软件工程原理?
10. 说一下敏捷开发?敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。四个核心价值观:沟通、简单、反馈、勇气,现在有加上了谦逊。
11. 说一下cookie和session的区别,cookie数据存放到客户端,session数据存放到服务器端,cookie不能超过4k,session则没有此项限制,session有时间的限制(服务器停掉session中保存的数据就会消失,而且session中存放的信息过多的话会影响服务器性能),cookie则可以保存很长时间;
12. 说一下http中get和post的区别?说到这里,应该说下http的请求包含有get,post,put,delete。其中最常用的应该是get和post,其中get方式是将表单中的数据编码到url中进行传送,而是用post方式进行传送时则将表单中的数据则封装到了http协议中的header中传送。get是请求幂等的(即如果两次请求的url一样,那么返回的结果应该也是一样的,请求本身不会改变服务器的状态),post可以进行文件上传或者更新数据等功能(即会改变服务器的状态时)。重复访问get方式创建的请求,浏览器会用缓存进行后续处理。get传输的数据量为2K,post传输的数据量较大,一般认为不受限制,但是理论上IIS4中最大量为80K,IIS5中最大量为100K。
13. 使用pageContext获取部署的应用程序名,pageContext.request.contextPath.
14 jsp:include page="" 与  @include file=""的区别?首先名词解释,第一个是include动作,第二个是include指令,include动作可以动态的检查页面的数据修改并及时动态的刷新数据,适用于包含动态页面,而include指令不会去自动检查页面数据是否有改动,适用于包含静态页面,但是include指令中允许包含的文件中含有影响jsp主页面的代码。
15. 事务的四大特性:一致性、原子性、隔离性和持久性。
16. 软件生命周期的六大的阶段:问题定义及规划、需求分析、软件设计、编码、测试、维护
17.web容器:web容器是一种服务程序,为应用服务器提供一个运行环境,可以是jsp,servlet直接跟容器中的环境变量进行交互,而不必关心其他问题
18. 数据库三范式:第一范式:字段具有原子性,不可再分(数据表中的字段都是单一属性,不可再分);
                              第二范式:每行必须可以被唯一的区分,即加上唯一主键,非主属性部分依赖于主属性部分;
                              第三范式:除了满足第一、第二范式外,不能包含其他表包含的非主关键字信息;
19. 数据库优化经验:a. 去掉多余的外键(影响插入和删除的性能);b.尽量使用union all而不是union(会进行排序去重操作)
20. AOP和IOC
        IOC:主要用于实现模块间的解耦,类与类之间的依赖关系改为有Spring容器控制,不需要程序员手动在代码中进行注入。
        AOP:程序中有很多不相干的类的方法,但是这些方法前后需要加上一些固定的操作,比如日志记录,事务提交、权限判断等        
21. 动态代理的过程:得到逻辑实现类(new Real)->根据Proxy(需要使用InnovacationHandler)得到代理对象->调用代理对象相关方法  
22. 单例模式、工厂模式     
23. finalize方法在Object下,在对象被清理出内存之前被调用,做必要的清理工作,这个方法是垃圾回收器在确定这个对象没有被引用时调用的,子类可以覆盖该方法,此方法将在垃圾回收器回收之前调用此方法,可用于整理系统资源和其他清理工作。
  • 大小: 16.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics