常见的面试题总结

1.依赖注入和控制反转的区别:

                        控制反转:解决对象创建的问题(对象创建交给别人)

                        依赖注入:在创建完对象后,对象的关系的处理就是依赖注入(通过set方法依赖注入)

 

2.ArrayListLinkList的区别:

 

a.ArrayList是实现了基于动态数组的数据结构,LinkList基于链表的数据结构

b.对于随机访问get和set  ArrayList要优于LinkList  因为LinkList要移动指针

c.对于新增和删除操作add和remove, LinkList要占优势,因为ArrayList要移动数据

 

3.unionunion all的区别:union表示两个集合中相同的只能取一个,而union all表示两个集合中相同的,都能取出来

 

4.deletetruncatedrop的区别:

a.delete是DML,可回滚,可带where,相对慢,内容无,结构有

b.truncate是DDL,不可回滚,不可带where,相对中,内容无,结构有

c.drop是DDL,不可回滚,不带where,相对快,内容无,结构无,可以带purge关键字,闪回  二回滚

 

5.rownumrowId的区别:

a.Rownum在表结构的中是看不见的,只能在select中明确写在rownum方可显示,与不同的表绑定在一起,每张表都配有的rownum,每张表的rownum可以相同,表亡,rownum亡可用于Oracle分页中,是从1开始的连续,不断的数值型

b.rowId在每张表都不一样  表亡,rowId亡,它是沟通表与DBF文件的桥梁,用于索引中

 

6springMVCstruts2的区别:

a.springMVC入口是servlet  struts2入口是filter

b.springMVC可以是单例或多例,而struts2只能是多例的

c.springMVC以方法参数形式收集值,而struts2以类形式收集值

d.springMVC的结果是先绑定与modelAndView,再放入request域对象中,struts2的结果集先绑定到valuetrack中,再放入request域对象中

e.springMVC开发运行速度相对快 struts2运行速度相对较慢

 

7.JDBC的开发步骤:

a.注册驱动,加载数据库的驱动

b.通过DriverManger获取数据库的连接

c.通过Connection获取statement/preparedment

d.将sql绑定到statement/preparedment中去,准备向sql发送sql语句

e.执行sql,返回对象的结果集

f.如果以查询的话,迭代结果进行处理

g.依次关闭连接对象

 

8.HashTableHashMap的区别:HashTable线程是安全的,可以做成实例变量,而HashMap线程不安全,可以作为局部变量

 

9.Hibernate何时不适用:

a.操作超大批量数据时不适合

b、不想占用太多的内存空间

c、不想速度慢

 

10GetPost区别:

a、get传输数据有限,不安全,会显示URL地址

b.post传输数据无限,安全,适合注册

 

11TCPUDP的区别:Tcp是安全性可靠的协议,而UDP是非安全可靠地协议

 

12Hibernatemybatis的相同点:

a、都是通过sessionFactoryBuilder由XML配置文件生成的sessionFactory,然后由sessionFactory生成session,最后由session开启事务和执行sql语句,其中sessionFactoryBuilder,sessionFactory,session的生命周期都是差不多的

b、Hibernate和Mybatis都是支持JDBC和JTA事务处理

 

mybatis的优点:a、可以进行更为细致的SQL优化,减少查询字段

b、mybatis容易掌握,hibernate门槛较高

 

hibernate的优势:a、有更好的二级缓存机制,可以使用第三方缓存 ,而mybatis本身提供的缓存机制不佳

b、hibernate的dao层开发比

mybatis简单,mybatis需要维护SQL和结果的映射

c、维护和缓存比mybatis好,对增删改查的对象的维护更加方便

d.数据库移植性很好,不同的数据库需要写不同的SQL

 

13、抽象类和接口: 

抽象类:

1)抽象方法,只有行为的概念,没有具体的行为实现。使用abstract关键字修饰,没有方法体。子类必须重写这些抽象方法。 

2)包含抽象方法的类,一定是抽象类。

3)抽象类只能被继承,一个类只能继承一个抽象类。

接口:

 1)全部的方法都是抽象方法,属型都是常量  

2)不能实例化,可以定义变量。

3)接口变量可以引用具体实现类的实例

 4)接口只能被实现,一个具体类实现接口,必须实现全部的抽象

5)接口之间可以多实现

6)一个具体类可以实现多个接口,实现多继承现象

 

     

14SET  LIST  MAP

一、

 

  1.Set:,无序,元素不可重复(但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)

2.List:有序,列表存储,元素可重复

3.Map:无序,元素可重复

 

二、

  1.Set接口:有两个实现类(HashSet(底层由HashMap实现),LinkedHashSet)

  2.List接口:有三个实现类(

 LinkedList:基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢;

     ArrayList:非线程安全的,效率高;基于数组;便于索引,但不便于插入删除

      Vector:基于线程安全的,效率低;基于数组; )

  3.Map接口:有三个实现类(HashMap,HashTable,LinkedHashMap)

     HashMap:非线程安全,高效,支持null;

     HashTable:线程安全,低效,不支持null;

     LinkedHashMap:是HashMap的一个子类,保存了记录的插入顺序

  SortMap接口:TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序

 

15、java中线程的接口是:Runnable接口,实现类是:Thread类

  线程的状态:

       1.新状态(线程已被创建但尚未执行;start( )尚未被调用)

       2.可执行状态(线程可以执行,虽然不一定正在执行,CPU时间随时可能被分配给该线程,从而使得它执行)

     3.死亡状态(正常情况下run( )返回使得线程死亡,调用stop( )或destroy( ))

     4.阻塞状态(线程不会被分配CPU时间,无法执行)

与线程同步相关的方法:

    1.wait( ):使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;

    2.sleep( ):使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException 异常;

    3.notify( ):唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关;

    4.notifyAll( ):唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争;

 

16、单例设计模式:

public class Singleton {

   private static Singleton instance;

   private Singleton (){}

   public static Singleton getInstance() {

          if (instance == null) {

                 instance = new Singleton();

          }

          return instance;

   }

} 

17、如何优化SQL语句

 

  1. 对操作符的优化 尽量不采用不利用索引的操作符,如:in ,not in , is nul, is not null,<>等
  2. 对条件字段的一些优化,采用函数处理的字段不能利用索引,进行了显式或隐式的运算的字段不能进行索引,条件内包括了多个本表的字段运算时不能进行索引
  3. 在业务密集的SQL当中WHERE后面的条件顺序影响
  4. 应用ORACLE的HINT(提示)处理
  5. 查询表顺序的影响

 

18OverloadOverride的区别:

Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系

Overload是重载:方法名称不变,其余的都是可以变更的。它的关系是同一个类,同一个方法名,不同的方法参数或返回值

 

19.&&&区别:

&表示位运算符,表示按位与运算,而&&表示逻辑运算符,表示逻辑与and

 

20collectioncollections的区别:

Collection是集合类的上级接口,继承与他的接口主要是setlist

Collections是针对集合类的一个帮助类,他提供了一系列静态方法实现对各种集合的搜索,排序,线程安全化操作

 

21:Strig s=new String(“xyz”);创建了几个String Object

两个  一个字符对象  一个字符对象引用对象

 

22Math.round(11.5)等于多少?Math.round-11.5)等于多少?

Math.round(11.5)==12Math.round-11.5==11

 

23java中有没有goto

Java中的保留字  现在没有在java中使用

 

24、数组中有没有length()这个方法?String有没有length()这个方法?

数组中没有这个方法   length的属性,String中有length()这个方法

 

25:Set里的元素是不能重复的   那么是用什么方法来区分重复是否?是用==还是equals()?他们有何区别?

是用iterator()方法来区分重复是否?equals()是判断两个set是否相等,==equals()方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的 对象的内容和类型相配的话,返回真值

 

26errorexception有什么区别?

Error表示恢复不是不可能但很困难的情况下的一种严重问题,比如说内存溢出   不可能指望程序能处理这样的情况

Exception表示一种设计或实现问题,也就是说   他表示如果程序运行正常   从不会发生的情况

 

27List Set ,map是否继承collection接口?

List Set  map不是

 

 

28、接口是否可继承接口?抽象类是否实现接口?抽象类是否可继承实体类?

接口可以继承接口   抽象类可以实现接口,抽象类是否继承实体,但前提是实体类必须有明确的构造函数

 

29、构造器(constructor)是否可被重写(override)?

构造器(constructor)不能被继承    因此不能被重写,但可以被重载   overload

 

30、是否可以继承String类?

String类是final  故不可以继承

 

31try{}里面有一个return语句  那么紧跟在这个try后的finnally{}里的code会不会被执行  是么时候执行  return前还是后

 

会执行  return

 

 

32、用最有效的效率的方法算出2乘以8等于几?

2<<3

 

33、两个对象值相同(x.eqauals(y)==true),但却有不同的hash code   这句话对吗?

不对   有相同的 hash code

不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hashCode相同,它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)

34、当一个对象被当做参数传递到一个方法后  此方法可改变这个对象的属性   并返回变化后的结果  那么这里到底是值传递还是引用传递?

 

是值传递  java编程只有值传递参数  当一个对象实例做为一个参数被传递到方法中时,参数的值就是该对象的引用  对象的内容可以在被调用的方法中改变    但对象的引用是永远不会改变的

 

35switch是否能作用在byte  是否能作用在long    是否能作用在String上?

Switchexpr1)中  expr1是整数表达式  因此传递给switchcase语句的参数应该是在int    short  char 或者byte   long   string都不能作用于switch

 

Arraylistvector的区别?

1Vector线程是安全的    也就是说是同步的   ArrayList线程不安全  不是同步的

2、当需要增长时   vector默认增长为原来的一倍 ArrayList却是原来的一半

 

36StringStringBuffer的区别:

String的长度是不可变的    StringBuffer的长度是可变的   如果你对字符串中的内容操作  特别是内容要修改时   那么使用StringBuffer   如果最后需要String 那么使用StringBuffertoString()方法

 

37intinteger有什么区别?

Java提供两种不同的类型  引用类型和原始类型    intjava的原始数据类型,integerjavaint提供的封装类型  java为每个原始类型提供封装类型

 

 

38转发和重定向的区别:

1、转发在服务器端完成的;重定向是在客户端完成的
2、转发的速度快;重定向速度慢

3、转发的是同一次请求;重定向是两次不同请求

4、转发不会执行转发后的代码;重定向会执行重定向之后的代码

5、转发地址栏没有变化;重定向地址栏有变化

6、转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

 

39、报406错误两种原因:1Jackson包没有导入 2.、后缀不能是.html  必须是.action

 

40、一个类中只有一个实例并且自行化向整个系统提供这个实例叫单例

 

41super()this()的区别:
 

super()指父类的无参构造方法,this()是指当前类的无参构造方法,两者必须写在构造方法的第一句

 

42final ,finally , finalize 的区别:

Final 有最终的不可改变的意思,可以用来修饰基本数据使之成为常量,该常量只能在编译期进行修改

当修饰对象时,则该对象引用不能改变,但该对象本身可以做修改。

当修饰方法时,表示该方法在被继承时不能被修改,或覆盖

当修饰类时,表示该类不会别别的类继承

Finally 用于在Try-catch-finally语句中 finally 中的代码块时必须执行的

该方法用于检查对象不被运行状态的对象引用或间接地引用 finalize   当某个对象要被当做垃圾回收时,会调用finalize()方法,

 

43sleep() wait()有什么区别?

Sleep()是线程中的一个方法,该方法用于控制自身线程的流程,当执行sleep()方法睡眠时保持对象锁

Wait()方法是object类中的一个方法,该方法用于让一个线程处于等待状态并释放对象锁,当该线程想要再次执行时需要调用notity方法唤醒此线程

 

44、如何获取一个目录下有多少个文件?

File f=new File(“D://”);          Int count=f.list().length;

 

45、面向对象的三大特性:继承  封装  多态

 

46JQuery九大选择器

1、基本选择器

2、层次选择器

3、基本过滤选择器

4、内容过滤选择器

5、可见性过滤选择器

6、属性型选择器

7、子元素过滤选择器

8、表单对象属性过滤选择器

9、表单选择器

 

47servlet的生命周期:

1、构造方法,2.init方法  3service方法   4destory方法

 

48JSP9大内置对象:request  response  config  application  session  exception  out page  pagecontext

 

49cookie session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

 

50mysql删除重复:

Delete from test  where ID not in(select ID from(select min(ID)ID from test group by aa)t)

 

51MySQL分页查询:

Select * from table  limit 0,2

起始行从0开始的   起始行=(当前页-1*显示每页显示的条数

 

52事物分为声明试事物和编程试事物

声明试事物表示在配置文件中配置声明   编程试事物表示在代码中直接写事物处理  提交

 

53MySQL索引的概念

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。上述SQL语句,在没有索引的情况下,数据库会遍历全部200条数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。如果我们把SQL语句换成“SELECT * FROM article WHERE id=2000000”,那么你是希望数据库按照顺序读取完200万行数据以后给你结果还是直接在索引中定位呢?上面的两个图片鲜明的用时对比已经给出了答案

 

常见的几种索引:1.普通索引

2.唯一索引

3.全文索引(FULLTEXT

4单列索引、多列索引

5. 组合索引(最左前缀)

 

 

54常见的MySQL锁定机制1.行级锁定 2.页级锁定  3.表级锁定

 

猜你喜欢

转载自blog.csdn.net/weixin_39643007/article/details/81989777
今日推荐