zoukankan      html  css  js  c++  java
  • 面试准备

    此博客链接:

    数据结构

    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确认

    出来混总是要还的
  • 相关阅读:
    软件开发环境-开发环境、测试环境、生产环境的区别
    软件开发环境-开发环境、测试环境、生产环境的区别
    软件开发环境-开发环境、测试环境、生产环境的区别
    Proof of Stake FAQ
    【转】Ouroboros:一个可证明安全的PoS区块链协议 (共识介绍)
    可验证随机函数VRF
    Randao 可证公平随机数(VRF)白皮书
    VRF介绍
    随机数概论——VRF,Commit Reveal,BLS的原理及应用
    『分片技术分析』从分片开始了解区块链扩容方式
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/15241039.html
Copyright © 2011-2022 走看看