欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java面试 -(一)基础总结

程序员文章站 2022-06-21 12:30:28
...

1… Java基础
1.1…String Stringbuffer Stringbuilder 区别
String 是不可改变的字符串
StringBuffer 是可以改变值得,线程安全
StringBuilder 是可以改变值得,非线程安全
1.2…Java中的集合
Java 中的集合分为value,key-value 种,
1、存储值得有两种,list和set
List 是无序的,可重复的
set 有序的,不可重复的
2、存在key-value的是 Map
1.3…ArrayList和LinkedList区别
ArrayList底层是数组存储。
数组优点是查询特定的元素快,而插入修改删除比较慢(数组在内存中是一块连续的内存,如果需要 修改插入,需要操作内存)。
LinkedList底层是链表存储。
查询是需要从头部开始找索引,查询效率低,插入修改删除,不需要移动内存,只需要改变引用指向 即可。
1.4…HashMap 和 HashTable和ConcurrentHashMap区别
HashMap和HashTable区别:
相同点:
1、HashMap和HashTbale都是可以用来存储key-value数据。
区别:
1、HashMap是可以把null作为key或者value的,HashTable是不可以的。
2、HashMap是线程不安全的,效率较高。而HashTable是线程安全,效率低
HashMap和ConcurrentHashMap区别:
相同点:
HashMap和ConcurrentHashMap都是线程安全。ConcurrentHashMap引入分段锁,把HashMap拆分成n个HashTbale,根据key.hashCode()来决定放在那个hashTable中。
在ConCurrentHashMap中,把map分成n个segment

HashMap数组加链表
Socket
Tcp/IP协议
Netty网络连接
1.5…线程的几种实现方式、怎么启动、怎么区分、线程池
实现方式:
1、通过继承Thread类实现一个线程(继承拓展性不强,java是单继承)
2、通过实现Runnable接口实现一个线程
怎么启动:
Thread thread = new Thread()
thread .start(),启动后执行run方法
thread .setName(“线程名称”)
thread.join()把指定线程加入到当前线程,可以把两个交替线程合并成为顺序执行线程

    线程的5种状态

初始状态:实现runnable接口和继承thread可以得到线程。
可运行状态: thread .start()进入可运行状态,join()把
运行状态
阻塞状态
死亡状态

1.6…线程并发库
Java通过execute提供的四个方法创建线程池:
newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,
可灵活回收空闲线程, 若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

线程池的作用:
1、限制线程个数,不会导致由线程过个导致系统运行缓慢和崩溃。
2、线程池不需要每次去创建和销毁,节约资源。
3、线程池不需要每次去去创建,响应时间更快。

1.7…常用的设计模块
1.7.1…单列模式(饱汉模式、饥饿模式)
(1)、构造方法私有化,只有自己类中可以创建其它点的都不可以创建。
(2)、在自己的类中创建一个单实例,饱汉模式一出来就创建实例,而饥汉模式需要的时候才创建
(3)、提供一个方法获取该实例对象(创建的是需要进行方法同步)。
1.7.2…工厂模式
SpringIoc就是工厂模式
1.7.3…代理模块
SpringAop动态代理模式