[TOC]
Java基础
java中Object类中有哪些方法,他们的作用分别是什么?
java中的多态的含义?
java常用的会抛出哪些异常类型?
代理模式的API
集合
HashMap多线程下会有什么问题?
基本数据类型
装箱拆箱?(-128到127)
说说String、StringBuilder和StringBuffer吧
创建一个String对象,内部怎么说?(字符串池那一套)
StringBuffer 源码如何实现 ?
String s = new String(“abc”) 创建了几个 String 对象
a=a+b 与 a+=b 有什么区别吗
switch 中能否使用 String 做参数
什么是编译期常量? 使用它有什么风险
为什么Java 中只有值传递
Static Nested Class 和 Inner Class 有什么不同
构造器 Constructor 是否可被重写
final,finalize() 和 finally{} 的区别
https://blog.csdn.net/qq_39135287/article/details/78455525
深拷贝和浅拷贝的区别是什么
快速失败 和 安全失败 的区别是什么
Iterator 和 ListIterator 的区别是什么
将 Java 代码编译成字节码的过程
Java 是解释执行还是编译执行,Java 为什么采用这种执行模式
1 | 解释运行: 一边对程序进行翻译,翻译成计算机可以执行的指令,一边交给计算机执行,翻译一句执行一句。 |
Arrays.sort()使用的什么排序
1 | 在数组的数量小于47的情况下使用插入排序,在大于或等于47或少于286会进入快速排序(双轴快排) |
并发
线程池的七大参数
核心线程数 和 最大线程数的作用和使用过程中的变化
volatile
原子类的实现方式
锁的AQS的实现方式
阻塞队列的Java API有那些
JUC包下的锁以及用法(CyclicBrarry,CondownLatch,ReentrantLock,信号量以及其用法)
Synchronized底层实现(偏向锁,轻量级锁,重量级锁具体实现,包括重量级锁中cxq队列以及EntryList,WaitSet)
Synchronized与ReentrantLock区别(可打断,非阻塞获取,Condition)
ThreadLocal的实现(ThreadLocalMap,WeakRefence的使用,内存泄漏问题,ThreadLocal的启发式清理以及段落式清理
两个线程交替打印
保证线程安全
线程间是如何通信的
如何停止一个正在运行的线程 ?
常见的原子类有哪些,它有什么不足 ?如何进行优化 ?
什么是公平锁,什么是非公平锁?有哪些常见的公平锁和非公平锁?为什么说synchronized 是非公平锁?
什么是乐观锁,什么是悲观锁?为什么说 synchronized 是悲观锁?乐观锁的实现原理是什么?乐观锁一定好吗?
Condition 接口及其实现原理 ?
什么是 Callable ? 什么是 Future ?
线程池是自己创建的吗?
线程池七大参数都是什么?
各个参数都是怎样设置的?
线程池核心线程数和最大线程数为什么要设置成这样?
线程池池化技术
何时创建核心线程,何时创建最大线程
线程池拒绝策略
由RPC项目问到了序列化反序列化,问到了对象有一个属性是对象引用,怎么序列化。
可重入锁和synchronized区别
volatile为什么使用缓存行
volatile对于64位缓存行的优化
手撕生产者、消费者模型。10个生产者,10个消费者,队列容量为30个
JVM
JMM内存模型(主要说的工作内存以及共享内存,volatile关键字的实现,按需禁用缓存以及编译优化,Happens-before原则)
JVM运行时数据区(堆栈方法区,方法区为什么要从永久代改为元空间)
类加载机制说说吧
说说双亲委派机制吧
网络
sql入侵?如何防止sql侵入
http请求行的各个字段及含义,发生重定向时返回的状态码是多少?正常是多少?
http和https的区别?
说一下应用层常用的几个协议?
浏览器输入URL之后的过程?
域名投毒
计算机网络的7层模型
Http状态码中的302和401是什么用的
证书在ssl过程中的作用
网络通道非常拥塞时,TCP如何保证数据可以正确到达对方
三次握手的过程中有哪些攻击方式,举例子
应用程序如何将数据从网卡上面读取到进程当中
同步IO和异步IO
reactor模型
IO多路复用
Linux中有那些多路复用方式
计算机在设置ip的时候会设置哪些参数(ip地址,子网掩码,网关地址)
说说子网掩码以及网关的作用
301,302有什么区别
三次握手
那为什么它们的seq需要不同的seq呢,我可以直接在seq上加个1,把收到的seq置为相同的不久行了吗,为什么我服务器端要单独发送自己的seq呢
为什么建立连接需要三次握手,断开连接需要四次挥手
为什么会有一个半关闭的状态,明明客户端已经要求断开连接了呀,你还向客户端发送报文(不知道,瞎猜数据没传输完)
这个数据没传输完指的什么,客户端请求断开连接的时候数据没有传输完吗,谁的数据没有传输完(尴尬了2分多钟)
TCP连接他有一个四元组知道吧
ICMP这个协议他位于网络的第几层知道吧
那链路层的协议有哪些啊
TCP三次握手四次挥手?为什么四次挥手等待2MSL?
转发和重定向区别?
操作系统分配的进程空间是怎样的?线程能共享哪些
滑动窗口大小如何确定
操作系统
进程和线程的区别?
进程的几种状态,CPU如何在这几种状态中调度
操作系统为什么要设置用户态和内核态
讲一下DMA的作用
进程间的通信方式(无名管道,命名管道,共享内存,消息队列,套接字)
分别有哪些例子
协程有了解吗 ?
内存的缺页中断、页面置换算法
CPU调度
数据库
谈谈幻读
幻读和脏读的区别
MySQL中 redo log 和 binary log 的区别和场景的使用意义
redo log 和 undo log 实现了什么功能
为什么innoDB使用B+树
mysql事务的隔离级别以及分别如何实现 以及解决什么问题
mysql索引的数据结构以及分类(B+树以及和B-树,红黑树,二叉树优缺点,聚集索引,非聚集索引,Hash索引的优缺点以及实现)
锁
explain 的用法,ref 代表什么意思 ? index 代表什么意思 ?
1 | BufferPool 内部的数据结构 |
唯一性索引和主键索引的区别?
聚簇索引与非聚簇索引的区别?
什么是覆盖索引?
什么情况下索引会失效?
什么是最左匹配原则?
在 MySQL 中怎么给 Select 语句显示加锁呢 ?
MVCC 机制能解决幻读问题吗?
InnoDB 是怎么解决幻读问题的?
说一下 nextkey lock 的原理?
既然在可重复读隔离级别下结合nextkey lock可以解决幻读问题,为什么还需要 S 可串行化呢?
行锁什么时候变表锁
select语句什么时候行锁变表锁
索引下推
1 | 查到符合条件的索引->逐个回表,判断别的条件是否满足; |
- 5.6之前的版本是没有索引下推这个优化的,因此执行的过程如下图:
- 会忽略age这个字段,直接通过name进行查询,在(name,age)这课树上查找到了两个结果,id分别为2,1,然后拿着取到的id值一次次的回表查询,因此这个过程需要回表两次。
Mysql5.6及之后版本
- 5.6版本添加了索引下推这个优化,执行的过程如下图:
- InnoDB并没有忽略age这个字段,而是在索引内部就判断了age是否等于20,对于不等于20的记录直接跳过
Redis
Redis是单线程模型还是多线程模型?
Redis单线程模型为什么可以那么快(说了非阻塞IO的实现,Selector,定时任务的实现)
框架
AOP解决了什么问题
说说AOP(面向切面编程,动态代理的实现jdk实现以及CGLib实现)
说说循环依赖的实现(一级缓存缓存以及创建完成的对象,二级缓存没有创建完成,三级缓存解决被代理对象的循环依赖)
Spring中对象的生命周期(单例,多例,globl session,session,application)
设计模式
策略模式
手写DCL
说说你用到过的设计模式(主要说了Spring里面的几个)
简单工厂模式->BeanFactory
策略模式
装饰者模式->Wapper
单例模式(Spring的Bean默认生命周期,好处)
模版方法模式(jdbcTemplate这种,好处)
消息队列
消息队列说一下
sql的索引是什么,常见的索引方式,什么时候索引失效?
Linux
linux用户权限最大的是谁?root与普通用户之间转换的指令?
如何找到一个进程并杀死他?
设计题
- 100亿黑名单URL,每个64B,判断一个URL是否在黑名单中
- 2GB内存在20亿整数中找到出现次数最多的数
- 40亿个非负整数中找到没有出现的数
- 40亿个非负整数中找到一个没有出现的数,内存限制10MB
- 找到100亿个URL中重复的URL
- 海量搜索词汇,找到最热TOP100词汇的方法
- 40亿个无符号整数,1GB内存,找到所有出现两次的数
- 10MB内存,找到40亿整数的中位数
- 设计短域名系统,将长URL转化成短的URL.(知乎老哥给出了答案,博客有人根据他的总结了一下,很好)
- 让你系统的设计一个高并发的架构,你会从哪几个方面考虑?
- 一个千万级的APP,你要搞定关注和粉丝列表,你用什么来做。要求最后一个关注的在最前面。新增和取关都要比较快的反馈你怎么做?如果一个人关注了之后,服务器宕机了怎么办?
- OOD design:计费停车场
- 假设有这么一个场景,有一条新闻,新闻的评论量可能很大,如何设计评论的读和写
- 显示网站的用户在线数的解决思路
算法
排序方法,并给出他们的时间复杂度?
交换俩个对象swap(Object obj1, Object obj2){}
快排 堆排评价(时空复杂度 最优 最差 是否稳定)
项目
还是问了RPC项目,问到了注册中心怎么进行心跳检测
注册中心对于服务端掉线时怎么处理
服务端用的哪个类监听的(ServerSocket)
自己实现的定时器是啥?
动态代理
NIO
除了MD5,你还知道哪些加密算法?
设计学生成绩系统,如何建表,如何建索引
主键和索引的区别