Java面试 -(一)基础总结

2 篇文章 0 订阅
1 篇文章 0 订阅

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动态代理模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值