IT资源平台

Java程序员的100道经典面试题和参考答案(拿走不谢)

发布日期:2019-10-09 11:36:43 阅读量:925
各位小伙伴,如果有想脱单或者身边的朋友想脱单,请来我们这里投稿啦!!目前我们的粉丝基本都是IT行业的,大家都知道程序员脾气好、收入也不错,最主要的是专一,没得时间出去瞎混!!动心的小伙伴,赶紧扫描右侧的二维码,关注公众号:IT资源平台,点击公众号的“想脱单”菜单参与,一定会遇见了对的人呢!

1:Arraylist和Linkedlist的区别?

  1. ArrayList、LinkedList、Vector和Stack是List的四个实现类,其中Vector是基于JDK1.0,虽然实现了同步,但是效率低,已经不用了,Stack继承Vector
  2. 区别:
  3.   1. ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构
  4.   2. 对于随机访问getset,ArrayList要优于LinkedList,LinkedList不支持高效的随机访问
  5.   3. ArrayList适合查找,LinkedList适合增删

2:重载与重写有什么区别?

  1. override(重写)
  2. 1.方法名、参数、返回值相同。
  3. 2.子类方法不能缩小父类方法的访问权限。
  4. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
  5. 4.存在于父类和子类之间。
  6. 5.方法被定义为final不能被重写。
  7. overload(重载)
  8. 1.参数类型、个数、顺序至少有一个不相同。
  9. 2.不能重载只有返回值不同的方法名。
  10. 3.存在于父类和子类、同类中。

3:&和&&有什么区别?

  1. &按位与:
  2.    1.a&b是把a和b都转换成二进制数然后再进行与的运算
  3.    2.不管前面的条件是否正确,后面都执行
  4. &&逻辑与(短路功能):
  5.    1.a&&b就是当且仅当两个操作数均为 true时,其结果才为 true
  6.    2.前面条件正确时,才执行后面,不正确时,就不执行,效率高

4:接口和抽象类有什么区别?

  1. 抽象类(abstract class):
  2.    1abstract 关键字修饰,并且没有方法体
  3.    2:抽象类不能直接创建实例
  4.    3:抽象类只能被继承,一个具体类继承一个抽象类,必须实现所有抽象方法
  5. 接口(interface):
  6.    1:实现接口的一定要实现接口里定义的所有方法
  7.    2:接口可以实现多重继承
  8. 区别:
  9.    1:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用
  10.    2:一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类
  11.    3:接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法
  12.    4:抽象类中的成员可以是private、默认、protectedpublic的,而接口中的成员全都是public
  13.    5:抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法

5:写出JDBC操作数据库的步骤?

  1. 1:加载驱动
  2.    Class.forName("oracle.jdbc.driver.OracleDriver");
  3. 2:创建连接
  4.    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "1111", "1111");
  5. 3:创建语句
  6.    PreparedStatement ps = con.prepareStatement("select * from user");
  7. 4:执行语句
  8.    ResultSet rs = ps.executeQuery();
  9. 5:处理结果
  10.    while(rs.next()) {
  11.        rs.get.....(“”);
  12.    }
  13. 6:关闭资源
  14.    finally {
  15.        if(con != null) {
  16.            try {
  17.                con.close();
  18.            } catch (SQLException e) {
  19.                e.printStackTrace();
  20.            }
  21.        }
  22.    }

6:HashTable和HashMap有什么区别?

  1. 1.HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口
  2. 2.主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高Hashtable
  3. 3.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
  4. 4.最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是

7:创建多线程的方式有几种?分别是什么?线程死锁是如何产生的?如何防止线程死锁现象?

  1. 方式:
  2.    继承Thread、实现 Runnable 接口
  3. 产生:
  4.    - 一个资源每次只能被一个进程使用
  5.    - 一个进程因请求发生阻塞时,依然对已获得的资源保持不放
  6.    - 进程已经获得资源使用权,但是一直未使用
  7.    - 同一个进程,频繁的获取资源的优先使用权,一直未释放
  8. 防止:
  9.    加锁顺序(线程按照一定的顺序加锁)
  10.    加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
  11.    死锁检测(一般是将所有的锁存放于map对象中,检测map中的锁)

8:String, StringBuffer, StringBuilder 的区别?

  1. 1.运行速度快慢为:StringBuilder > StringBuffer > String
  2.    - (String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的)
  3. 2.StringBuilder是线程不安全的,而String、StringBuffer是线程安全的

9:TCP和UDP的区别?哪个是三次握手协议?

更多面试题及答案,请移步公众号“IT资源平台”回复关键字“Java面试100题”获取。

获取更多资源

关注右侧伟德官网网页版入口地址公众号,及时获取最新资源。
如想获取其他资源(如:教学视频),请添加小助手[ QQ:406785612 伟德官网网页版入口地址:tq0810 ],备注:网站

宅男福利公众号

宅男福利
请输入关键字