![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试题
qq_38216661
这个作者很懒,什么都没留下…
展开
-
高并发常见的面试题
1. 什么是进程进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间)。比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左边的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。2. 什么是线程进程是表示自愿分配的基本单位。而线程则是进程中执行运算的最小单位,即执行处理机调...原创 2019-10-16 15:29:10 · 1478 阅读 · 0 评论 -
Java常用八大排序算法
Java常用的八种排序算法1.直接插入排序直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。首先设定插入次数,即循环次数,for(inti=1;i<length;i++),1个数...原创 2018-10-10 22:28:46 · 182 阅读 · 0 评论 -
面向对象的"六原则一法则"。
- 单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",就如同葵花宝典或辟邪剑谱的中心思想就八个字"欲练此功必先自宫",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。我们都知道一句话叫"因为专注,所以专业",一个对...原创 2018-09-10 22:09:47 · 165 阅读 · 0 评论 -
什么是DAO模式?
DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作。在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接...原创 2018-09-10 21:58:17 · 15648 阅读 · 0 评论 -
在进行数据库编程时,连接池有什么作用?
由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行TCP的三次握手,释放连接需要进行TCP四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放...原创 2018-09-10 21:54:34 · 1232 阅读 · 0 评论 -
JDBC操作数据库的步骤
下面的代码以连接本机的Oracle数据库为例,演示JDBC操作数据库的步骤。加载驱动。Class.forName("oracle.jdbc.driver.OracleDriver");创建连接。Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "t...原创 2018-09-10 21:47:38 · 147 阅读 · 0 评论 -
编写多线程程序有几种实现方式?
(1)继承Thread类,重写run函数创建:class xx extends Thread{public void run(){Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源}}开启线程:对象.start() //启动线程,run函数运行(2)实现Runnable接口,重写run函数开启线程:Threa...原创 2019-06-22 23:20:49 · 2082 阅读 · 0 评论 -
线程同步以及线程调度相关的方法
- wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁; - sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常; - notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关; - notit...原创 2018-09-03 22:20:58 · 2008 阅读 · 0 评论 -
线程的sleep()方法和yield()方法有什么区别?
① sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会; ② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态; ③ sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异...原创 2018-09-03 22:12:54 · 315 阅读 · 0 评论 -
Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态)。wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或no...原创 2018-09-03 22:07:36 · 1066 阅读 · 0 评论 -
TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。 TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。 Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的...原创 2018-09-03 22:04:22 · 758 阅读 · 0 评论 -
List、Map、Set三个接口存取元素时,各有什么特点?
List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value pair)映射,映射关系可以是一对一或多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序...原创 2018-09-03 21:56:11 · 1720 阅读 · 0 评论 -
ArrayList、Vector、LinkedList的存储性能和特性
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。 ...原创 2018-09-03 21:53:11 · 2911 阅读 · 0 评论 -
final、finally、finalize的区别。
- final:修饰符(关键字)有三种用法: 如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。 将变量声明为final,可以保证它们在使用中不被改变,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。 被声明为final的方法也同样只能使用,不能在子类中被...原创 2018-09-03 21:49:28 · 92 阅读 · 0 评论 -
Java常见的运行时异常
- ArithmeticException(算术异常) - ClassCastException (类转换异常) - IllegalArgumentException (非法参数异常) - IndexOutOfBoundsException (下标越界异常) - NullPointerException (空指针异常) - SecurityException (安全异常)...原创 2018-09-03 21:46:55 · 1307 阅读 · 0 评论 -
Java异常处理
Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用? Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。 在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象...原创 2018-09-03 21:45:12 · 139 阅读 · 0 评论