1.集合类的应用场景和优劣
单列collection集合
list集合
● ArrayList集合(基于数组,最常用):
希望元素可以重复,又有索引,索引查询快
● LinkedList集合(基于链表):
希望元素可重复,又有索引,增删首尾操作快
Set集合
● HashSet集合(基于哈希表):
希望增删改查快,但元素不重复、无序、无索引
● LinkedHashCode集合(基于哈希表和双链表)
希望增删改查快,但元素不重复、有序、无索引
● TreeSet集合(基于红黑树,后续可用List集合实现排序)
要对对象排序
双列map集合
map集合
● HashMap(最常用)
元素按照键是无序、不重复、无索引,值不做要求
● LinkedHashMap
元素按照键是有序,不重复,无索引,值不作要求
● TreeMap
元素按照键是排序,不重复,无索引,值不做要求
2.集合类的继承结构
3.arraylist和linkedlist的区别
List 接口的两种不同实现,并且两者都不是线程安全的
ArrayList在初始化的时候,有初始大小10,插入新元素的时候,会判断是否需要扩容,扩容的步长是0.5倍原容量,扩容方式是利用数组的复制,因此有一定的开销
● ArrayList集合(基于数组,最常用):
希望元素可以重复,又有索引,索引查询快
● LinkedList集合(基于链表):
希望元素可重复,又有索引,增删首尾操作快
4.map集合的原理
jdk7前:数组+链表
jdk8:数组+链表+哈希表
5.hashmap原理
数组+链表+哈希表
6.list和set区别
7.list和map的区别
8.HashSet和HashMap区别
hashSet的底层数据结构:hashTable;数组+链表+红黑树
底层都是hash表结构,hashSet底层就是hashmap;
HashSet
9.java和c的区别
10.java三大特性
● 封装
● 继承
● 多态
11.接口和抽象类的区别
相同点:接口和抽象类都不能被实例化
不同点:抽象类中可以有抽象的方法,也可以没有,可以定义属性;接口中的方法都是抽象的,并且接口中的变量都是静态的常量
12.字符串有哪些类
字符串的类String、StringBuilder、StringBuffer;工作中大部分是单线程
StringBuffer是线程安全的但执行速度较慢,StringBuilder线程不安全但执行速度快
StringBuilder >StringBuffer>String
13.线程安全
1.什么是线程安全问题
就是 多线程环境中 , 且存在数据共享 , 一个线程访问的共享 数据被其他线程修改了, 那么就发生了线程安全问题 , 整个访问过程中 , 无一共享的数据被其他线程修改了 就是线程安全的
程序中如果使用成员变量, 且对成员变量进行数据修改 , 就存在数据共享问题, 也就是线程安全问题
线程安全的类
类里所有方法都是同步方法(但构造方法不加同步锁synchroned),eg:StringBuffer
14.多线程的几种实现方法
run():普通方法,调用单线程;start():启动新线程,进入就绪状态
● 实现runnable接口(工作常用)——>因接口多实现
● 继承thread类
● 实现callable接口(有返回值)
15.JDK与JRE的区别
JDK >JRE> JVM
JDK:包含JRE和开发者工具包,是java程序开发工具包(管开发)
JRE :java程序的运行时环境,包含JVM和运行时所需的核心类库(管运行)
JVM:java虚拟机
jdk包括jre——>jdk:开发者工具包;jre:java运行时环境——>javac:编译器;java:执行器
16.方法重载与重写的区别
重载:
一个类中定义多个相同名的方法
要求:
①方法名同,但形参列表(个数、类型、顺序)不同;
②与返回值类型、访问修饰符无关
重写:
子类对父类方法的覆盖
子类的某成员方法与父类的一模一样
要求
● 方法名同,形参同,返回值同;访问修饰符可同,或更宽泛
● 重写父类方法后,调用时优先执行子类重写后的方法
17. == 与equals区别
比较堆区地址;equals比较内容,但需要重写(6.16test)
● 默认比较堆区地址
默认实现为(thisobj),比较两个对象地址是否相同
● 重写后比较对象里具体的值
○ equals()方法覆盖步骤
■ 比较两个引用是否指向同一个对象
■ 判断obj是否为null
■ 判断两个引用指向的实际对象类型是否一致
■ 强制类型转换
■ 依次比较各个属性值是否相同
18.什么是io流
输出输入流、字节字符流(种类)、序列化流、打印流、转换流、缓冲流
19.get和post
默认使用get
请求转发与重定向的区别
JSP与Servlet的区别
session和cookie
共同点:都是完成一次会话内多次请求间数据共享的;
应用场景:
● 购物车:使用Cookie来存储
● 以登录用户的名称展示:使用Session来存储
● 记住我功能:使用Cookie来存储
● 验证码:使用session来存储
域对象的两种
区别在于生命周期的不同
session:默认保存一次会话的30min内;request:一次请求内有效