面试javase
1 数据类型
2 ++i 和 i++
3 堆存储的是实际值, 栈存储的是堆空间的引用
4 数组拷贝
5 排序算法
5.1 冒泡排序(bubble sort):
这是最简单的排序法,基本思路:对未排序的各元素从头到尾依次比较相邻的两个元素大小关系,若大于则交换位置
, 经过第一轮比较排序后可得出最大值,然后使用同样的方法把剩下的元素逐个比较即可
, 若有N个元素,那么一共要进行N-1轮比较, 第M轮要进行N-M次比较
5.2 选择排序(selection)
基本思路:选定某个索引位置,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。
可以看出选择排序,第一轮会选出最小值,第二轮会选出第二小的值,直到最后。
第一轮从arr[0]和后面元素相比较,第二轮从arr[1]和后面的元素相比较,依次类推。N个数要进行N-1轮。选择排序每一轮只进行一次交换,相对于冒泡排序效率高一些。
5.3 线性查询和二分法查找
6. 数组工具类
7. 线程同步synchronized
7.1 线程创建
线程的创建主要3种方式,我们讲解最传统的两种方式:
1:继承java.lang.Thread类.
2:实现Runable接口
7.1 多线程描述
在Java中,解决多个线程并发访问同一个资源时出现的线程安全问题,解决方案有3种:
1:同步代码块
2:同步方法
3:Java5开始支持,锁机制.
7.2
同步方法的同步监听对象是谁?
若同步方法是非static方法,此时同步监听对象是:this.
若同步方法是static方法,此时同步监听对象是:当前方法所在类的字节码对象.
7.3
生产者和消费者案例
7.4
lock和synchronized对比
7.5 lock
7.5 死锁
当多个线程都拿着同步监听对象不放,此时造成的情况就是死锁(效果:程序没有停止,但是没有任何反应).开发中是避免死锁的.
8 集合
9 LinkedList
LinkedList类:底层使用的单链表操作/双向链表/单向队列/双向队列
9 栈
10
ArrayList
11 LinkedList
12
Queue:表示单向队列. 先进先出(FIFO),后进后出(LILO).
插入操作,就应该插入到队列的末尾,从队首移除.
Deque:表示双向队列. FIFO,FILO.
插入操作:插入到队列的末尾和第一个.
移除操作:移除队列的末尾和第一个.
Stack:栈: 后进先出LIFO.
13
14 TreeSet
排序
15 IO流
字节流拷贝文件
文件输出流
文件输入流
字符流 和字节流转字符流
包装流
对文件字节流包装
对文件字符流包装
Properties类
对象流和序列化
16. jdbc
-->贾琏欲执事:
1:加载注册驱动.
2:获取连接对象.
3:创建/获取语句对象.
4:执行SQL语句.
5:释放资源.
jdbc事务
描述: 事务其实就是多个操作,把多个操作看成是一个不可分割的整体,整体中的多个要成功都成功,要失败都失败
jdbc获取自动生成的主键
17 方法重载和重写的区别