java面试题

原文链接: https://my.oschina.net/u/2358147/blog/472959

1、http中长、短连接是如何使用的,各自的应用场景。

2、字符序列1,2,3,4,5,6,7,8,9,10,11,12,13,14  二分法查找1,需要比较几次。

3、重写对象的equals方法后,还需要重写hashcode方法,为什么。

4、分布式环境中,如何设计服务间通信。

5、防止sql注入方法。

6、描述下JVN内存分区及OutOfMemroyError是如何出现的。

7、描述下JVM的类加载机制及ClassNotFoundException和NoClassDefException区别。

ClassNotFoundException发生在装入阶段。 
当应用程序试图通过类的字符串名称,使用常规的三种方法装入类,但却找不到指定名称的类定义时就抛出该异常。

NoClassDefFoundError: 当目前执行的类已经编译,但是找不到它的定义时

也就是说你如果编译了一个类B,在类A中调用,编译完成以后,你又删除掉B,运行A的时候那么就会出现这个错误

加载时从外存储器找不到需要的class就出现ClassNotFoundException 
连接时从内存找不到需要的class就出现NoClassDefFoundError
 

大概这样的吧,JDK API里面的解释 
1.NoClassDefFoundError 
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。 
当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。

2.ClassNotFoundException 
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常: 
* Class 类中的 forName 方法。 
* ClassLoader 类中的 findSystemClass 方法。 
* ClassLoader 类中的 loadClass 方法。 
但是没有找到具有指定名称的类的定义。从 1.4 版本开始,此异常已经更新,以符合通用的异常链机制。在构造时提供并通过 getException() 方法访问的“加载类时引发的可选异常”,现在被称为原因,它可以通过 Throwable.getCause() 方法以及与上面提到的“遗留方法”来访问。

ClassNotFoundException ,一般出现在程序运行的时候,类路径加载不了,这个自己的程序启动的时候很常见,反射或者JAR包里少东西

NoClassDefFoundError多见于服务调用的时候,如果你暴露的interface里面的接口地址木有加载,调用就会报这个

 

8、常用的十个linux命令。

9、数据库的ACID特性是什么,以及他们分别使用的场景。

 

 

ACID是指数据库事务具有的四个特性:原子性、一致性、隔离性、持久性

原子性:事务是数据库的逻辑工作单位,事务中包括的操作要么都做,要么都不做。只有使据库事务中所有的操作都执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该回滚(ROLLBACK)到执行事务前的状态。

一致性:如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的;事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些尚未完成的事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。例如某公司在银行中有A、B两个账号,现在公司想从A中减去一万元,存入账号B。那么就可以定义一个事务,该事务包括两个操作,第一个操作就是从账号A减去一万元,第二个操作就是向账号B中加入一万元。这两个操作要么全做,要么全不做,数据库都处于一致性状态。如果只做一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于不一致状态。可见一致性与原子性是密切相关的。

隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。独立的数据库事务集合以不相互冲突的方式执行。仍使用这个银行类比,考虑两个客户同时在帐户之间转移资金。数据库必须分别跟踪两个转帐;否则,资金可能进入错误的帐户。

持久性:指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。  只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。


 

10、面向对象的方式设计一个计算器。

 

 

 

3、http状态码301、302联系与区别。

4、http是有状态的吗,怎么理解。

5、并发容器类在工作中的使用。

6、ConcurrentHashMap实现原理。

7、List、Set、Map联系与区别,常用的实例化类型,应用场景。

8、HashMap扩容机制,hash碰撞如何解决。

9、用过的第三方类库。

10、虚拟机内存示意图,gc机制。

11、JVM调优经验,常使用工具。

12、如何快速定位系统中死循环的问题。

13、谈谈对索引的理解,使用的注意事项。

14、大型网站调优经验。

15、做过的系统的架构图。

 

转载于:https://my.oschina.net/u/2358147/blog/472959

你可能感兴趣的:(java面试题)