当前位置:首页 > 范文大全 > 面试技巧 > 正文
 

java开发面试技巧

发布时间:2024-04-25 20:44:53 影响了:

java开发面试技巧篇一:java工程师面试题大全-100%公司笔试题你都能碰到几个

1. hibernate中离线查询去除重复项怎么加条件??

dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

2. http协议及端口,smtp协议及端口

http:超文本传输协议 端口 80

smtp:简单邮件传输协议 端口25

3. 编写程序,完成文件复制功能

4. Servlet创建过程及生命周期Servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制。

Servlet 的创建有两种方法。

1). 客户端请求对应的 Servlet 时,创建 Servlet 实例;大部分Servlet 都是这种 Servlet 。

2). 通过在web.xml 中设置load-on-startup来创建servlet实例,这种实例在Web 应用启动时,立即

创建Servlet 实例

Servlet 的运行都遵循如下生命周期:

1). 创建 Servlet 实例。

2). Web 容器调用 Servlet 的 init() 方法,对Servlet 进行初始化。

3). Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。根据客户端的请求方式通过Servlet

中service()方法去相应的doXXX()方法;

4). Web 容器销毁Servlet 时,调用 Servlet 的 destroy() 方法,通常在关闭Web容器之时销毁

Servlet。

5. 用sql语句分页:

Mysql数据库:

SELECT TOP 页大小 * FROM table1 WHERE id NOT IN(

SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id

) ORDER BY id

Oracle数据库:

在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。

截取ID的方法

select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between 5 and 7;

三层嵌套

SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;

6. list.map.set的存储特点?

List 以特定次序来持有元素,可有重复元素.

Set 无法拥有重复元素,内部排序.

Map 保存key-value值,value可多值

7. final,finally,finaliz的区别

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 ;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

8. arraylist和vector的区别?

1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的

2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

9. 说出ArrayList,Vector, LinkedList的存储性能和特性?

1). ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是

插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始

2). ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加

和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢.

3). Vector使用了sychronized方法(线程安全),所以在性能上比ArrayList要差些.

4). LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以索引数据慢,是

插入数据时只需要记录前后项即可,所以插入的速度快.

10. HASHMAP,HASHTABLE区别

1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;

2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。

3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。

11. .描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session

中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择

Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性

session工作原理

(1)当有Session启动时,服务器生成一个唯一值,称为Session ID(好像是通过取进程ID的方式取得的)。

(2)然后,服务器开辟一块内存,对应于该Session ID。

(3)服务器再将该Session ID写入浏览器的cookie。

(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。

(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的Session ID。

(6)然后,服务检查该Session ID所对应的内存是否有效。

(7)如果有效,就读出内存中的值。

(8)如果无效,就建立新的Session。

12. String和stringbuffer进行字符串连接时的区别?

String对项内容是不可改变的,StringBuffer是可以改变的,且高效;

13. 什么叫项目?

用有限的资源、有限的时间为特定客户完成特定目标的一次性工作

14. .J2EE J是什么意思? 2是什么意思 EE是什么意思? Struts的拦截器你是怎么做的,是独立开发的,能

够独立开发的到。然后问有哪几种拦截?

Java 2 Platform,Enterprise Edition

继承AbstractInterceptor类,覆盖intercept()方法

有struts自己的拦截器 如timer ,i18n,scop,servletconfig,token

还有自定义拦截器

15. 简单介绍下java?Spring的AOP,IOC的讲述 对struts2的了解,1,2的比较xml的了解J2ee的

webserviced的协议?

Spring AOP:代理机制 Spring提供的自动代理机制

Spring的IoC来实组件之间的依赖关系注入, 使控制层与业务实现分离,即客户通过

调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护

或升级困难。由Spring为DAO生成代理对象来为DAO添加事务服务,由IoC容器DAO的代理实例注入到业务组件中,业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类,使得持久层更换或修改不影响上层组件。

16. Collections,collection的区别

Collection是个java.util下的接口,它是各种集合结构的父接口。Collections是个java.util下的普通类,它包含有各种有关集合操作的静态方法。Collections是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作

17. 如何释放过度使用的undo表空间

1. 启动SQLPLUS,并用sys登陆到数据库。 2. 查找数据库的UNDO表空间名3. 确认UNDO表空间;SQL> select name from v$tablespace; 4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置; 5. 查

看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间 6. 检查UNDO Segment状态

18. 数据库里面游标,索引是怎么用的? 在oracle数据库中,用get 和load方法 这2个方法来查没有的数

据 那么分别会反馈什么样的结果?

declare cur cursor keyset for

get返回null,load classnotfoundException

19. .在Oracle中数据库中的一个表中,这个表没有主键id也没有特定标示来查数据,怎么查?

rowid

20. 简述private、proteced、public、internal修饰符的访问权限

同一个类 同一个包 不同包的子类 不同包非子类

private *

default * *

protected ** *

public * * * *

21.概述反射和序列化

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范Reflection APIs。

22.序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象

进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流

23.ORACLE中not和and和or优先级由高到低?

notandor

24.java 是如何进行异常处理的

Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理

25. struts2 必备包

commons-fileupload-1.2.1.jar

freemarker-2.3.13.jar

ognl-2.6.11.jar

struts2-core-2.1.6.jar

xwork-2.1.2.jar

26. dao 是什么及作用

dao 是数据访问对象 DAO负责管理与数据源的连接来获取和储存其中的数据

27. ibatis 中的#与$的区别 在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:

select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。

select * from table where id = $id$ ,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成 select * from table wher(出自:WwW.HNNscy.Com 博 文学习 网:java开发面试技巧)e id = '$id$'

28. struts2的实现原理

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper

29. 简述spring 的事务传播行为和 隔离级别

spring 的事务传播行为: Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:

PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。

PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

Spring 的隔离级别

1、Serializable:最严格的级别,事务串行执行,资源消耗最大;

2、REPEATABLE READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。

3、READ COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。

4、Read Uncommitted:保证了读取过程中不会读取到非法数据。

30. 写一段把本地文件formfile拷贝到本地文件tofile的程序

public class ChangeJtdToJava {

public static void main(String[] args) {

File dir = new File("f:/jtd");

java开发面试技巧篇二:Java开发工程师面试题总结

JAVA开发工程师面试题总结--JAVASE部分

1.谈谈final,finally,finalize的区别?

? final是Java的一个关键字,用于定义不能被继承的类,不能被覆写的方法,常量。 ? finally是Java的一个关键字,是异常处理操作的统一出口。

? finalize是Object类中所提供的一个方法,用于在对象回收之前进行收尾操作。

2.请解释Java实现可移植性的原理

? Java程序最终通过字节码文件运行,运行的时候字节码需要JVM的支持,但是在不同的操作系统上有不同JVM,程序不用关系操作系统,只关心JVM,只要JVM不改变,程序可以在操作系统间任意移植。

3.请解释path和classpath的区别?

? path是windows的环境属性,用于指定可执行命令的路径

? classpath是指在java程序执行的时候,用于指定类的加载路径

4.请说明下JAVA中的几个特殊关键字(了解,一般面试面这个问题的都是一些煞笔公司)

? 未使用到的关键字:goto、const

? 有特殊含义的关键字:null、true、false

? JDK1.4之后增加了一个assert关键字

? JDK1.5之后增加了一个enum关键字

5.请解释JAVA中的数据类型的划分,并说出其默认值 ? 基本数据类型:

? 数值型:

? 整型:byte、short、int、long;? 0

? 浮点型:float、double; ? 0

? 字符型:char ? 空字符:’\u0000’

? 布尔型:boolean? false

? 引用数据类型:数组、类、接口? null

6.请解释&和&&、|和||的区别

? &(普通与)和|(普通或)指的是所有条件都进行判断;

? &&(短路与)如果前面的条件不满足,则后面不再进行判断,||(短路或)如果前面的条件满足则后面不再判断;

? 在开发之中为了性能的提高,主要使用短路与和短路或操作;

? &和|除了用于逻辑运算之外,也可以进行位运算的操作;

7.请解释String类的两种比较方式

? 在String类中可以使用“==”和equals()两种操作来进行字符串的比较

? “==”比较的是两个字符串的内存地址数值,属于数值比较

? equals()是String类中提供的一个方法,用于字符串内容的比较,最简单的做法就是比较字符串永远使用equals()方法就行了

8.请解释String对象的两种实例化方式的区别

? 首先String对象的实例化方式有两种:一种是直接赋值,另外一种是通过构造方法完成

? 直接赋值:只开辟一个堆内存空间,而且采用了共享设计模式,可以自动入池,以备下次对象继续使用

? 构造方法:会开辟两快内存空间,其中有一块空间将成为垃圾,而且不会自动入池,可以使用intern()方法进行手工入池

? 从开发角度来说,很明显使用直接赋值的方式会更好一些

9.请谈谈方法的重载和覆写的区别

? 首先重载和覆写都是面向对象多态性的一个体现

? 重载

? 单词:OverLoading

? 概念:方法名称相同,参数的类型或个数不同

? 范围:发生在一个类之中

? 权限:重载的时候没有权限的限制

? 覆写

? 单词:Override

? 概念:方法名称、返回值、参数的个数及类型全部相同

? 范围:发生在继承关系中

? 权限:子类覆写的方法不能拥有比父类更严格的访问控制权限

? 重载的时候可以返回值类型不相同,但是没有任何意义

10.请谈谈this和super的区别

? this

? 属性:this.属性表示的是找到本类的属性,如果本类没有找到则继续查找父类 ? 方法:this方法()表示找到本类的方法,如果本类没有找到则继续查找父类 ? 构造:必须放在构造方法的首行,不能与super关键字同时出现

? 特殊:表示当前对象

? super

? 属性:super.属性直接在子类之中查找父类中的指定属性,不在查找子类本身 ? 方法:super.方法()直接在子类之中查找父类中的指定方法,不在查找子类本身 ? 构造:必须放在构造方法首行,不能与this关键字同时出现

? 在开发之中使用this和super可以明确的划分出子类和父类之间的操作

11.请解释Collection和Collections的关系

? 两者之间在定义上没有直接的关系

? Collection是单值集合的操作最大父接口

? Collections只是一个集合的工具操作类

12.为什么构造方法的定义上不写返回值类型,如果不返回写一个void不也可以吗

? 如果构造方法上写了void的话,则表示的就是一个普通方法了,普通方法是在对象实例化之后调用的,而构造方法是在对象实例化的时候同时调用的

13.请解释Error和Exception的区别

? Error:表示的是JVM出错,即,程序还没有运行时所发生的错误,用户无法处理; ? Exception:表示程序运行时发生的错误,用户可以处理;

14.请解释String与StringBuffer的区别,分别在什么时候用 ? String的内容不能改变(改变的是地址的指向),而StringBuffer的内容是可以改变的 ? String类和StringBuffer类中定义的方法可以很好的实现互补

? 从开发角度来说,大部分情况使用的都是String类,很少使用StringBuffer,使用StringBuffer只有一个前提,当字符串的内容需要不断的修改对象的时候

15.请解释throw和throws的区别

? throw表示人为的进行异常抛出,手工抛出异常

? throws表示:用于方法声明上,表示一个方法不处理异常,而是交给被调用处处理

16.使用char型数据能否表示一个汉字

? 首先一个汉字占2个字节,而UNICODE编码也是16位的,java又是采用UNICODE编码,但是保存汉字,语言必须是中文才可以保存

17.是否可以继承String类

? 不可以,因为String类是final类,不可以被继承

18.抽象类可以有构造方法吗

? 可以有构造方法,而且抽象类中的子类实例化对象的时候也依然符合子类对象实例化的过程,先调用父类的构造方法,为父类的属性初始化,而后调用子类自己的构造方法,所以抽象类中的属性,static属性,常量等都是可以定义的

19.抽象类中可以没有抽象方法吗

? 可以没有抽象方法,尽管没有抽象方法,也不能直接使用关键字new实例化对象

20.一个抽象类中能否包含内部类或内部抽象类

? 可以

21.一个抽象类能否使用static 关键字声明

? 在外部的抽象类肯定不能使用static关键字

? 在内部抽象类中使用static,则表示外部类,则可以使用

22.一个抽象类能否使用final声明

? 不能,final定义的类不能有子类,而抽象类必须有子类

23.请解释多线程的两种实例化方式

? 多线程的两种实现方式是继承Thread类和实现Runnable接口,不管使用何种方式都要覆写run()方法

? 继承Thread类与实现Runnable接口相比会有当继承的局限

? Thread类也是Runnablee接口的子类,不管通过何种方式实现多线程,最终多需要依靠Thread类的start()方法启动

? 使用Runnablee接口可以更加清楚的表示出数据库共享的概念

24.多个线程操作同一资源的时候需要注意什么?会带来那些问题 ? 多个线程操作同一资源的时候必须考虑到同步,但是过多的同步会造成死锁

25.抽象类和接口的区别

? 抽象类

? 关键字:abstract class

? 组成:属性,(全局)常量,构造方法,普通方法,(抽象方法),static方法 ? 权限:可以使用各种权限,private,public等

? 使用:抽象类必须有子类,子类必须继承抽象类

? 子类关键字:class 子类 extends 父类

? 与接口的关系:一个抽象类可以实现多个接口

? 设计模式:模板设计

? 局限:子类只能继承一个父类,有单继承限制

? 接口:

? 关键字:interface

? 组成:全局常量,抽象方法

? 权限:所有权限必须都是public

? 使用:接口必须有子类,子类必须实现接口

? 子类关键字:class 子类 implements 接口A,接口B

? 与抽象类的关系:接口不能继承抽象类,但是可以继承多个接口

? 设计模式:工厂设计模式,代理设计模式

? 局限:子类可以实现多个接口,避免了单继承

? 当接口和抽象类都能满足的情况下,优先使用接口,因为接口避免了单继承的局限性,便于扩展

? 接口与抽象类合作?适配器设计模式

26.请解释下JAVA中的垃圾回收机制

? 垃圾收集机制指的是可以对无用的内存空间进行释放,而对垃圾的收集采用两种方式 ? 第一种:不定期的进行自动的垃圾回收,不可控制的

? 第二种:Runtime中的gc()方法回收,可控的

27.作用域public,private,protected以及不写时的区别

28.如果现在父类中的方法是private,子类中覆写此方法为default权限可以吗?

? 从概念上来说是可以的,因为父类是private,子类覆写之后是default,而default权限>private,但是从实际角度来说,这种操作是不可能实现的,因为private比较特殊

java开发面试技巧篇三:2015年java开发岗位面试题归类

一、Java基础

1. String类为什么是final的。

2. HashMap的源码,实现原理,底层结构。

3. 说说你知道的几个Java集合类:list、set、queue、map实现类咯。。。

4. 描述一下ArrayList和LinkedList各自实现和区别

5. Java中的队列都有哪些,有什么区别。

6. 反射中,Class.forName和classloader的区别

7. Java7、Java8的新特性(baidu问的,好BT)

8. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高

9. Java内存泄露的问题调查定位:jmap,jstack的使用等等

10. string、stringbuilder、stringbuffer区别

11. hashtable和hashmap的区别

13 .异常的结构,运行时异常和非运行时异常,各举个例子

14. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果

15. String 类的常用方法

16. Java 的引用类型有哪几种

17. 抽象类和接口的区别

18. java的基础类型和字节大小。

19. Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题(建议熟悉 jdk 源码,才能从容应答)

20. 如果不让你用Java Jdk提供的工具,你自己实现一个Map,你怎么做。说了好久,说了HashMap源代码,如果我做,就会借鉴HashMap的原理,说了一通HashMap实现

21. Hash冲突怎么办?哪些解决散列冲突的方法?

22. HashMap冲突很厉害,最差性能,你会怎么解决?从O(n)提升到log(n)咯,用二叉排序树的思路说了一通

23. rehash

24. hashCode() 与 equals() 生成算法、方法怎么重写

二、Java IO

1. 讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。

2. 讲讲NIO。

3. String 编码UTF-8 和GBK的区别?

4. 什么时候使用字节流、什么时候使用字符流?

5. 递归读取文件夹下的文件,代码怎么实现

三、Java Web

1. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。

2. servlet的一些相关问题

3. webservice相关问题

4. jdbc连接,forname方式的步骤,怎么声明使用一个事务。举例并具体代码

5. 无框架下配置web.xml的主要配置内容

6. jsp和servlet的区别

四、JVM

1. Java的内存模型以及GC算法

2. jvm性能调优都做了什么

3. 介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明

4. 介绍GC 和GC Root不正常引用。

5. 自己从classload 加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。反正就是各种扩展

6. jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析

7. 数组多大放在 JVM 老年代(不只是设置 PretenureSizeThreshold ,问通常多大,没做过一问便知)

8. 老年代中数组的访问方式

9. GC 算法,永久代对象如何 GC , GC 有环怎么处理

10. 谁会被 GC ,什么时候 GC

11. 如果想不被 GC 怎么办

12. 如果想在 GC 中生存 1 次怎么办

五、开源框架

1. hibernate和ibatis的区别

2. 讲讲mybatis的连接池。

3. spring框架中需要引用哪些jar包,以及这些jar包的用途

4. springMVC的原理

5. springMVC注解的意思

6. spring中beanFactory和ApplicationContext的联系和区别

7. spring注入的几种方式(循环注入)

8. spring如何实现事物管理的

9. springIOC

10. spring AOP的原理

11. hibernate中的1级和2级缓存的使用方式以及区别原理(Lazy-Load的理解)

12. Hibernate的原理体系架构,五大核心接口,Hibernate对象的三种状态转换,事务管理。

六、多线程

1. Java创建线程之后,直接调用start()方法和run()的区别

2. 常用的线程池模式以及不同线程池的使用场景

3. newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办,底层原理。

4. 多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。

5. 了解可重入锁的含义,以及ReentrantLock和synchronized的区别

6. 同步的数据结构,例如concurrentHashMap的源码理解以及内部实现原理,为什么他是同步的且效率高

7. atomicinteger和Volatile等线程安全操作的关键字的理解和使用

8. 线程间通信,wait和notify

9. 定时线程的使用

10. 场景:在一个主线程中,要求有大量(很多很多)子线程执行完之后,主线程才执行完成。多种方式,考虑效率。

11. 进程和线程的区别

12. 什么叫线程安全?举例说明

13. 线程的几种状态

14. 并发、同步的接口或方法

15. HashMap 是否线程安全,为何不安全。 ConcurrentHashMap,线程安全,为何安全。底层实现是怎么样的。

16. J.U.C下的常见类的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的区别,put,offer的区别);原子类的实现。

17. 简单介绍下多线程的情况,从建立一个线程开始。然后怎么控制同步过程,多线程常用的方法和结构

18. volatile的理解

19. 实现多线程有几种方式,多线程同步怎么做,说说几个线程里常用的方法

七、网络通信

1. http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。

2. socket通信,以及长连接,分包,连接异常断开的处理。

3. socket通信模型的使用,AIO和NIO。

4. socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞。

5. 同步和异步,阻塞和非阻塞。

6. OSI七层模型,包括TCP,IP的一些基本知识

7. http中,get post的区别

8. 说说http,tcp,udp之间关系和区别。

9. 说说浏览器访问,经历了怎样的过程。

10. HTTP协议、 HTTPS协议,SSL协议及完整交互过程;

11. tcp的拥塞,快回传,ip的报文丢弃

12. https处理的一个过程,对称加密和非对称加密

13. head各个特点和区别

14. 说说浏览器访问,经历了怎样的过程。

相关热词搜索:面试技巧 开发 java java开发面试自我介绍 jsva面试题 万达信息面试题

相关文章
最新文章

Copyright © 2008 - 2017 版权所有 博文学习网

工业和信息化部 湘ICP备09005888号-2