字节

[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 做参数

什么是编译期常量? 使用它有什么风险

https://blog.csdn.net/qq_34802416/article/details/83548369?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

为什么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
2
3
4
5
6
7
8
9
10
11
12
13
解释运行: 一边对程序进行翻译,翻译成计算机可以执行的指令,一边交给计算机执行,翻译一句执行一句。

编译运行: 对整个程序先翻译成计算机可以理解的指令,然后计算机可以直接执行。
1. Java代码经过javac编译成class文件(字节码)
2. class(字节码)文件经过JVM编译成机器码进行解释执行**(解释执行)**
1. 对于热点代码,JIT(JustInTime)编译器会在运行时将其编译为机器码执行**(编译运行)**

特点:
编译型语言,执行速度快、效率高;依靠编译器、跨平台性差。
解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。

编译型的语言包括:C、C++、Delphi、Pascal、Fortran
Python是一门解释型语言

Arrays.sort()使用的什么排序

1
2
在数组的数量小于47的情况下使用插入排序,在大于或等于47或少于286会进入快速排序(双轴快排)
大于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
2
3
BufferPool 内部的数据结构

InnoDB 的页结构,有哪些常见的压缩[算法](https://www.nowcoder.com/jump/super-jump/word?word=算法),行记录通常有包含哪些字段

唯一性索引和主键索引的区别?

聚簇索引与非聚簇索引的区别?

什么是覆盖索引?

什么情况下索引会失效?

什么是最左匹配原则?

在 MySQL 中怎么给 Select 语句显示加锁呢 ?

MVCC 机制能解决幻读问题吗?

InnoDB 是怎么解决幻读问题的?

说一下 nextkey lock 的原理?

既然在可重复读隔离级别下结合nextkey lock可以解决幻读问题,为什么还需要 S 可串行化呢?

行锁什么时候变表锁

select语句什么时候行锁变表锁

索引下推

1
2
查到符合条件的索引->逐个回表,判断别的条件是否满足;
索引下推:根据联合查询的其他索引做一个筛选,筛选通过的才回表查询,减少回表次数;
  • 5.6之前的版本是没有索引下推这个优化的,因此执行的过程如下图:

img

  • 会忽略age这个字段,直接通过name进行查询,在(name,age)这课树上查找到了两个结果,id分别为2,1,然后拿着取到的id值一次次的回表查询,因此这个过程需要回表两次

Mysql5.6及之后版本

  • 5.6版本添加了索引下推这个优化,执行的过程如下图:

img

  • InnoDB并没有忽略age这个字段,而是在索引内部就判断了age是否等于20,对于不等于20的记录直接跳过

Redis

redis是用来干什么的?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,你还知道哪些加密算法

设计学生成绩系统,如何建表,如何建索引

主键和索引的区别