java面试题集合

面向对象的特征有哪些方面  

抽象: 

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 继承: 

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 封装: 

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

 

多态性: 

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

 

 

 反射,是否可以调用私有方法,在框架中的运用

 

 

 Error、Exception和RuntimeException的区别,作用又是什么?

 

 reader、writer、inputstream、outputstream、inputstreamreader、outputstreamwriter

 

java编码机制

 

 

String s = "aa"+"bb"; 编译器会做什么优化 

String s = "aabb"; 

String s = "aa"+ bb; //bb也是个字符串 ,编译器会做什么优化处理 jdk1.4和jdk1.5分别是  

New StringBuffer().append("aa").append(bb).toString(); //1.4  

New StringBuilder().append("aa").append(bb).toString(); //1.5   

 

 

Object类中有哪些方法  

 

IO和NIO本质不同在实际项目使用场景及如何使用,主要考察NIO使用场景   

 

 

多线程 同步的原理  

启动一个线程是用run()还是start()?  

解释是一下什么是线程安全?举例说明一个线程不安全的例子。解释Synchronized关键字的作用。

 

说出数据连接池的工作机制是什么?解决什么问题  

 

泛型的实现机制

 

排序算法有哪些,优缺点

 

Hibernate/Ibatis,两者的区别,简单的实现, 在性能调优方面都各有什么方式?

Hibernate: session.lock()的含义,session.merge()的含义,session.saveOrUpdate()的含义,session.flush()的含义 

主要考察对hibernate二级缓存和脏数据检查的了解

 

Spring的核心理念是什么? 

 spring 提供了哪两种事物处理方式,采用了java的什么技术 spring提供了编程式事务处理和声明式事务处理。 

spring中的事务处理实际上就是基于动态的aop(面向方面编程)机制实现的。spring在默认情况下会使用java的动态代理机制,因为java的动态代理机制要求其代理的对象必须实现一个接口。并且在该接口中定义准备进行代理的方法。而对于没有实现任何接口的java bean,spring是通过cglib来实现的。 中心接口 :rg.springframework.transaction.platformtransactionmanager. 编程式事务处理:transactiontemplate能够以编程的方式实现事务处理。 声明式事务处理: 

 Spring对多种ORM框架提供了很好的支持,结合事务管理描述在Spring中使用Hibernate或Ibatis的方法。  Spring bean生命周期 

当组合不同的生命周期机制时 - 例如,类层次中使用了不同的生命周期机制 - 开发者必须注意这些机制的应用顺序,下面是初始化方法中的顺序:

 

@PostConstruct元注释  

InitializingBean的afterPropertiesSet()定义  

自定义init()方法配置  

析构方法调用顺序是相同的:  

@PreDestroy元注释  

DisposableBean的destroy()定义  

自定义destroy()方法 

 

Spring 属性注入的实现 

spring AOP解决了什么问题,spring如何实现AOP? 

主要了解应聘人员对spring原理的理解,对AOP的理解,考察反射和cglib的了解。  Spring BeanFactory,FactoryBean的区别 

 Spring的事务管理 ,Spring bean注入的几种方式 

DI的几种方式:接口注入、Setter方法注入、构造方法注入,可展开问下各种DI的适用场景; 

第二点主要考察应试者对spring AOP是否真正研究并使用过,由于具体的声明式事务配置细节可能记不下来,只要能描述出主要的配置情况和命名匹配规则,事务属性的了解即可,也可以根据情况顺便问些动态代理相关的问题; 

 

oracle三层分页实现  sql注入原理  乐观锁,悲观锁 

 数据库操作的性能瓶颈通常在哪里, 1000万级别访问,在数据库和java程序上考虑哪些来进行性能优化  Jdbc中, batchSize, fetchSize的使用 batchSize 更新的数量 

fetchSize 一次从数据库取的数量

JDBC中,statement,prepared statement ,Callable statement的区别是什么? 

Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法; PreparedStatement:对于同一条语句的多次执行,Statement每次都要把SQL语句发送给数据库,这样做效率明显不高,而如果数据库支持预编译,PreparedStatement可以先把要执行的语句一次发给它,然后每次执行而不必发送相同的语句,效率当然提高,当然如果数据库不支持预编译, 

PreparedStatement会象Statement一样工作,只是效率不高而不需要用户工手干预.另外PreparedStatement还支持接收参数.在预编译后只要传输不同的参数就可以执行,大大提高了性能. 防止Sql注入 

 数据库数据文件和索引为什么需要收缩,如何实现收缩 

 性能方面。多数结合多线程、同步来问,以提取一张大表数据来作为例子 解决性能的方法 

 用JDBC定义一个带事务性的数据库操作主要步骤是什么?数据库的事务特性ACID是怎么理解的?项目中数据库设计时范式是怎么考虑的,

主要步骤: 

通过驱动器管理器获取连接接口。  获得Statement或它的子类。  设置Statement中的参数。  执行Statement。  关闭Statement。  关闭连接接口 

可以再问一些批处理的问题,Statement/PrepareStatement的区别等等. 

ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability); 

表关联时,内连接,左连接,右连接怎么理解?  

 

 

Ajax如何解决跨域问题  谈一下servlet的生命周期,是否有线程安全问题,如何解决? 

1、Servlet容器负责加载和实例化Servlet,servlet服务器启动时或者第一次接收servlet请求时。

2、在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。

3、Servlet容器调用Servlet的service()方法对请求进行处理。 

4、当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。

servlet在容器中是单实例的即servlet是线程不安全的,不允许在servlet中定义全局的类对象。

 

JAVA SERVLET API中forward() 与redirect()的区别? 

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法  

 

servlet中,如何定制session的过期时间?  servlet中,filter的应用场景有哪些?  描述JSP和Servlet的区别、共同点。

 

JSP文件的Scriptlets在编译后将被包含于该JSP servlet的service()方法。当JSP引擎处理客户端请求时,JSP Scriptlets在被请求的时候被执行。如果scriptlet产生输出,输出将在out (JSPWriter)对象中进行缓存然后最终发送到客户端。 

 

 jsp四种会话跟踪技术,会话作用域,page,request,application,session 

 

Cookie及Session实现的基本原理,对HTTP协议了解理程度。  

 

 

http get和post区别  

GET和POST提交数据方式不一样: 

GET请求提交数据有限,通过在URL中添加参数方式传送数据。 POST请求除了有GET请求一样的能力外,POST请求还可能通过发送请求是附加数据的方式传送文本或二进制数据   

 

 Singleton的几种实现方式

 

在项目中是否采用分层的结构,是怎样划分的,各层之间采用了哪些相关技术? 对哪些设计模式比较熟悉? 

 

描述一下实现一段代码的过程,从需求到最终交付。 

 

 开发环境怎么样 你是怎么开发一个项目的(项目流程 和 开发流程) 如何保证代码质量的 

 

 存放入ArrayList中的对象,如果有一个Integer类型的属性字段,现在要对ArrayList中的对象按升序或降序排序,有哪些方法? 

 

 在开发中如何把握代码质量。  

要点: 

1、可读性:命名、风格、注释。 

2、可维护性:单一职责、面向接口编程、消除重复代码、常量定义。 

3、性能考量:拼装字符串、预编译正则表达式、线程同步、数据库更新的批处理、SQL优化。

 

 

猜你喜欢

转载自jaesonchen.iteye.com/blog/2329372