Java面试准备

本文概述了HTTP协议、Java中的List数据结构(ArrayListvsLinkedList)、高性能缓存Redis、MySQL索引类型(如BTREE和哈希索引),以及Java虚拟机机制和Spring框架的IoC与AOP,还讨论了多线程与哈希Code和equals的使用。
摘要由CSDN通过智能技术生成

HTTP

  • HTTP是超文本传输协议,从万维网服务器传输超文本到本地浏览器,一种约定的格式。
  • 特点:
    1.允许传输任意数据 用Content-Type标记
    2.无状态 每次请求都没有联系
    3.CS 客户端服务器模式
  • 细节:
    长连接:复用TCP连接 多个HTTP请求复用一个TCP 节省开销
    HTTP1.0短连接 一次请求一次连接 文本格式传输
    HTTP2.0长连接 二进制格式传输数据
    HTTP明文传输不安全 HTTPS加入了SSL/TLS协议传输安全
  • HTTPS原理
    TCP三次握手 交换密钥 建立连接

Java List

List接口=>主要实现类ArrayList、LinkedList=>ArrayList底层数组默认大小10自动扩容,LinkedList底层链表无需扩容=>ArrayList扩容机制原来的1.5倍,扩容后使用Arrays.copyOf拷贝数组=>Vector底层数组线程安全扩容原来2倍=>Collections.synchronizedList获得线程安全的List,其他线程安全的数组:CopyOnWriteArrayList写时复制 占用内存 存在数据一致性问题=>数组排序Collections.sort

Redis

Redis基于内存、没有IO开销、读写速度快=>单线程,避免线程切换开销=>一般用来缓存热点数据缓解数据库压力,用来实现原子操作自增,例如用户访问数点赞数。

Mysql索引

索引类似于目录,是存储引擎提高访问速度的数据结构,数据是存在磁盘的如果没有引擎会全部加载到内存去检索

  • BTREE索引:稳定、从根节点到叶子节点
  • 哈希索引:无序、不支持范围查询、不支持模糊查询和最左匹配原则
  • 最左匹配原则:组合索引中用到了最左边的索引 需要最左边所有索引依次 才生效
  • 索引失效:没有最左匹配、%开头的like查询、upper()函数、使用or

Java虚拟机

  • 双亲委派机制
    一个类加载时 会层层委派给上级父类加载 不能加载则往下直到可以加载
  • 垃圾回收机制
    引用计数法 可达性分析

Spring

  • IOC控制反转
  • AOP切面编程 一些公共逻辑 例如事务管理 日志等

多线程

一些耗时较长的场景使用多线程,例如读入大量文件写入数据库或者发送邮件=>线程安全问题可以使用原子类=>synchronized是通过monitorenter和monitorexit指令实现=>CAS 比较交换

HashCode equals

equals == true 则 hashcode相同
hashcode相同 则 不一定相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值