23届上岸实习,总结面经回馈社区
网易面试(2020-11-18)
一面
-
Redis五种数据结构底层与C对比
-
SpringMVC流程,相同url会出现什么问题
-
会报异常,registerHandlerMethod方法上注解说明url名称相同时会抛出异常
-
-
如何保证缓存一致性
-
先删除缓存,再修改数据库。如果数据库修改失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致。因为读的时候缓存没有,则读数据库中旧数据,然后更新到缓存中。
-
可以先把“修改DB”的操作放到一个JVM队列,后面读请求过来之后,“更新缓存”的操作也放进同一个JVM队列,每个队列,对于一个作业线程,按照队列的顺序,依次执行相关操作,这样就可以保证“更新缓存”一定是在DB修改之后,以保证数据一致性
-
-
BeanFactory和FactoryBean
-
happen-before规则
-
一个线程解锁前对共享变量的写对解锁后其他线程加锁的读可见
-
线程对volatile变量的写,对其他线程的读可见
-
线程启动前的写对启动后的读可见
-
线程结束前对变量的写,对其它线程得知它结束后的读可见(比如其它线程调用 t1.isAlive() 或 t1.join()等待
它结束)
-
-
tcp拥塞控制
-
https 对称加密与非对称加密,如何防止第三方攻击
-
Redis RDB持节化,10GB文件如何处理
-
微服务理解,服务出故障如何解决
-
SeiverizableId
-
这个序列化ID起着关键的作用,它决定着是否能够成功反序列化!简单来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地实体类中的serialVersionUID进行比较,如果相同则认为是一致的,便可以进行反序列化,否则就会报序列化版本不一致的异常。
-
-
voliatle 可见性原理(lock前缀),有序性原理(4个内存屏障区别)
-
aop原理(chlib,jdk)动态代理和静态代理区别
-
判断回文链表 时间+空间+优化
-
HashMap原理(7和8)为啥大于8用红黑树,小于8链表
-
MySQL的InnoDB和MyISAM区别
-
索引数据结构为啥不用B树
-
啥时候建索引,索引如何优化(慢日志,explain字段解释)
-
最左前缀法则
-
重做日志,回滚日志
-
事务,隔离级别,MVCC,乐观锁,悲观锁实现,间隙锁
-
项目
滴滴面试(2020-12-31)
一面
-
Java基本数据类型
-
HashMap1.7/1.8
-
jvm内存模型
-
双亲委派机制
-
类加载机制
-
volatile/CAS原理
-
AQS机制
-
多线程工作原理/7大参数/4大拒绝策略
-
堆分代/GC算法/逃逸分析/GCROOT
-
对象分配步骤,TLAB
-
CMS原理 优缺点
-
MySQL Innodb和MySiam存储引擎区别
-
MVCC机制
-
事务4属性/隔离级别
-
undo/redo
-
乐观锁实现
-
Redis String/Hash 数据结构
-
List/set/arrayList/LinkedList/底层数据结构,优缺点
-
场景题:连续内存空间 有数组下标,如何定位内存空间
-
写SQL
-
算法:反转字符串
-
问实习时长,多久能来。
百度面试(2021-4.12-4-19)
一面
-
HTTP报文基本组成,基于无状态引处cookie和session区别,用户禁用cookie怎么办(答得token)
-
TCP三握四挥,三握原因,与UDP原因,TCP可靠性原因(握手链接,ack,快速重传,超时重传,流控,拥塞)
-
TCP与UDP区别
-
说说对数据结构理解,从数组,链表引申到二叉树,二叉搜索树,红黑树,B+树,B树。用hashmap和B+树和avl树做对比分析。
-
快排(自己提出写个非递归的),冒泡,堆排,LC。分析时间复杂度,空间复杂度
-
Redis五种基本数据结构,底层原理(SDS,hash,跳表)
-
设计秒杀(分布式锁 Redisson保证释放锁原子性,setnx保证过期时间原子性)
-
MySQL存储引擎,InnoDB,MyISAM对比,优缺点
-
Innodb的索引数据结构,聚簇,非聚簇
二面(凉)
-
400亿文件找数字存不存在(位图)
-
http渲染过程(面试官***)
-
x的n次方(快速幂,面试官还是***)
-
http状态码
网易面试(新闻大数据平台)
一面
-
项目(token与session,cookie异同,禁用cookie怎么办,为什么用token)等相关流程问题,MD5单向加密过程,RSA双向加密过程
-
MySQL索引数据结构,聚簇,非聚簇,二级索引是聚簇还是非聚簇(非聚簇,因为聚簇索引有序排列)
-
Java基本类型与包装类型,分别存在哪,Java值传递问题(面试官下了一个套说值传递和引用传递,实际上Java只有值传递,引用传的是地址值),给了个场景,一个方法接受基本类型参数和引用类型参数,在方法内对元素进行了修改问会不会改变原值
-
Java线程池,阻塞队列,Java的线程和OS线程区别(我回答的对内核级线程的映射)
-
场景题:设计一个优先级队列(用的小顶堆,大于堆顶的优先级直接放入堆,删除堆顶元素)
-
syn泛洪攻击(我说的采用tcp_synccookie解决)
-
B+树与B树区别
-
说说你熟悉的数据结构
-
进程间通信
-
redis跳表数据结构,时间复杂度,为什么不用红黑树,有哪几种类型
-
bitmap应用场景,布隆过滤器原理,一定能查到元素存在吗(不能,hash会重复)
-
string类型和c进行对比分析
-
redis为什么快
-
你是如何做MySQL调优的
-
内核态与用户态区别
-
LC写题 提示了一下,直接秒 100% 最优解
-
反馈:基础比较好,有点震惊到了我。但是没有hc了,我去帮你争取一下
网易面试
暂时未总结,题目很常规,面试官也很友好,面试体验很好,拿了offer已经在职