面试准备

此博客链接:

数据结构

1.什么是数据结构

数据结构是计算机存储和组织数据的一种方式

2.数据结构和数据类型的区别

数据结构定义了数据的存储结构和组织数据的方式,是一种思想。数据类型是指一类事物的集合以及对这类集合的操作。

3.各种排序算法

快速排序

冒泡排序

交换排序

二分查找

Java

set,list,map的区别

list允许空值和重复的值,允许对象按照对象在集合中的索引位置检索对象。有序

set不允许重复的值,可以有空值。无序

map的键不可以重复,值可以重复,无序

HashMap和hashtable的区别

hashmap是非线程安全的,键和值都可以为空

hashtable是线程安全的键和值都不可以为空

HashMap的底层

数组+链表

jdk8开始数组长度超过64,链表高度达到8时,链表转为红黑树(平衡二叉树),元素在内部以Node节点存在的

null存储在下标为0的位置

为什么Hashmap是线程不安全的

 

HashMap中的put方法的实现过程

先计算key的hash值,二次哈希然后对数组取模,对应到数组的下标,如果没有哈希冲突,则把值放入到数组中,如果产生冲突,使用equal比较,如果数组中的值和key的值相同则覆盖,如果不相同,判断链表高度,放入到链表中。

扩容参考链接:https://www.cnblogs.com/lizhen-home/p/7352125.html

list包含哪些类

linkedList和ArrayList、vector

 LinkedList和ArrayList的区别  

LinkedList基于链表,查找慢,删除快

ArrayList基于数组,查找快,删除慢

垃圾回收机制

String 、StringBuffer、StringBuilder

STring是final修饰的,不可变

StringBuffer线程安全

StringBuilder线程不安全

多线程、共享时,结果受不受影响需不需要加锁

经常需要改变字符串内容是使用后两个,优先使用StringBuilder,如果是多线程,还需要保证线程安全,使用StringBuffer

接口和抽象类的区别

抽象类中可以存在普通成员变量、而接口中只能存在public abstract

接口可以多实现,抽象类单继承

&和&&

1.&

  (1)按位运算符; (2)逻辑运算符

 两个数取二进制,然后相与

&左右两端条件式有一个为假就会不成立,但是两端都会运行,比如(1+2)=4 &(1+2)=3;1+2=4即使为假也会去判断1+2=3是否成立。

2.&&

&&也叫做短路运算符,因为只要左端条件式为假直接不成立,不会去判断右端条件式。

String 能被继承吗?

String 不能被继承,String 是由final修饰的类,

不可继承的原因

1.效率:禁止重写和继承,可以提高效率

2.安全:String类中有很多地方调用了底层的本地方法,调用了操作系统的API,如果方法可以被重写,可能被植入恶意代码,破坏程序。

重写和重载的区别

1.重写

作用范围:重写在父类和子类之间,而重载在同一个类中

参数列表:重写的参数必须相同,而重载的参数必须不相同

返回类型:重写返回相同类型或者子类,重载可修改返回类型

抛出异常:重写可减少删除,但是不能抛出新的异常,而重载可以修改

访问权限:重写不能做更严格 的限制,而重载可修改。

 

数据库

Group by作用

根据一个或多个列对结果集进行分组

事务

定义

数据库操作的最小工作单位,要么全执行,要么不执行,是一组不可再分的操作集合

事务隔离级别

分为四级

1.最低级,可以读取未提交的事务,会发生(脏读、幻读、不可重复读)

2.允许去读已提交的事务,防止脏读,但是会产生幻读和不可重复读

3.可以重复读,防止脏读,不可重读,但是还是会产生幻读

4.最高级,服从事务的四大特性

四大原则

原子性:要么执行,要么不执行

隔离性:所有操作完成以前。其他回话看不到这个操作。

永久性:一旦数据提交,对数据的修改就是永久性的。

一致性:事务前后,数据总是是不变的。

索引类型

B+树索引   数据有序,范围查询

Hssh索引   等值查询,高效查询,不能范围查询

聚集索引和非聚集索引

索引的优缺点,什么时候使用索引,什么时候不能使用索引

优点:查询速度快

缺点:更改数据慢,也需要更改索引

在频繁查询数据时建立索引,要是频繁修改数据不建议使用索引

索引的底层实现(B+树,为何不采用红黑树,B树)重点

数据库三范式

1.1NF       属性不可分割

2.2NF     主键不可分割

3.3NF      没有传递依赖

 

数据库中join的left join , inner join, cross join

左联和右联

包含左表中全部的数据或者右表中全部的数据。

内联:两个表的并联

聚簇索引和非聚簇索引的区别

聚簇索引:

非聚簇索引:

1、查询速度不同

聚集索引查询数据速度快。

非聚集索引查询数据速度慢。

2、占用内存大小不同:

聚集索引需要较少的内存来进行操作。

非聚集索引需要更多的内存用于操作。

 

 网络

1.OSI七层模型

物理层:传输比特流

数据链路层:差错检测

网络层:路由选择

传输层:提供端对端的接口

会话层:

表示层:

应用层:应用程序通讯

三次握手

客户端发送SYN,请求连接,服务器收到请求连接

服务器向客户端发送ACK的确认请求和SYN

客户端收到后,再次发送ACK的确认请求

四次挥手

 断开请求一般是由客户端发起的

客户端向服务器发送一个FIN断开请求

服务器收到请求后,先向客户端返回一个ACK的确认请求

等服务器当前正在传输的数据传输完成之后,服务器向客户端发送一个FIN终止连接请求

客户端收到请求后,想服务器发送一个ACK确认

posted @ 2021-09-08 08:28  萍2樱释  阅读(31)  评论(0编辑  收藏  举报