一、凉经汇总
1、腾讯 CSIG 一面凉经
(0)算法:leetcode
(1)项目
●介绍水平分表过程、大表拆分的过程。
●Redis有没有可能丢数据?怎么解决?
●你还有什么其他的方式来保证Redis的可靠性?(主从复制、哨兵、集群一通甩出来)
●RabbitMQ如何保证消息不丢失?(没保证,再加强)
●RabbitMQ如何做削峰填谷?
(2)八股
●InnoDB中一个三层的B+树能存多少数据?
●MySQL的索引怎么存储的?每个索引一个B+树,还是多个索引放一个B+树?
●每个叶子节点能存放多少条数据?(虽然没问,但是差点问到,mark一下,回去复习)
●叶子节点中存的是什么数据?
●B+树的范围查找怎么做的?
●分库分表具体的分片策略是怎么做的?
●表存满了之后怎么扩表?
●id是怎么生成的?(分布式自增主键)
●有没有其他的分布式id生成算法?(雪花),具体怎么实现的?(我不清楚,了解而已)
●Redis保证incr命令原子性的原理是什么?(不清楚)
●Redis数据的可靠性怎么保证?(持久化)
●介绍AOF持久化的过程?
●AOF重写期间命令可能会写入两次,会造成什么影响?(忘记了)
●讲一下JVM的内存模型?
●new一个对象存放在哪里?(运行时数据区),局部变量存在JVM哪里(不知道)
●JVM垃圾回收机制?(没学到)
●Linux系统的8080端口有多少个TCP连接,怎么看?(不知道)
●如何看Linux进程或CPU使用情况?(top)
●Linux查看内存情况?(free -h)
●讲下TCP的TIME_WAIT(TCP最熟的地方忘记了,可惜)
●ConcurrentHashMap底层是怎么实现的?
●HashMap为什么不能保证线程安全?
●进程间通信的方式?
●共享内存的方式如何保证并发安全?(我的回答是加锁)
●这个锁具体怎么实现的?(比较抽象,我回答了如果是我,我会怎么设计)
2、腾讯云-后台开发一面
(0)八股
(1)反射的实现原理
(2)线程池的工作原理
(3)分布式锁应用场景
(3)分布式锁---实现原理
(3)分布式锁---使用数据库进行实现
(5)消息队列应用场景
(4)消息队列RabbitMq
(5)RabbitMq如何防止消息丢失
(1)算法
求最大重复子串
二、面经
1、腾讯3.13号实习基地后端面试
(0)八股
●LRU思路
●你实现LRU是线程安全的吗?HashMap是线程安全的吗?怎么样是线程安全的?
●有什么线程安全的集合?
●Java中的多线程是怎么样的
●线程之间怎么同步
●final关键字有什么用
●Spring加载顺序
●bootStrap.yml和Application.yml谁先配
●spring.factories怎么样用的
●@Autoware的用法
●介绍一下Mysql索引失效
●嗯,如果我要在MySQL指定一行加读锁呢?
问:是要实际实现?还是讲原理?
面试官:直接给我一行
嗯嗯,讲一下事务隔离等级
●好,读已提交和可重复读有什么区别
那Prometheus采集数据方式
●好,Docker是怎么样的上线步骤呢?
追问:push的命令你给我打一下
●本地有哪些Docker镜像怎么看?
●Linux的进程的端口号那些怎么看?
问:以为还在Docker,问是服务器暴露的端口号还是?
面试官:进程号
了解,你说一下负载均衡的算法
●
●一致性哈希这个圆形一样取模为什么比哈希就好了?
●我看你用了RabbitMQ,能介绍为什么用RabbitMQ吗?
●有对比过RabbitMQ和Kafka的区别吗?
追问:
除了持久化呢?Kafka会持久化吗?
●看你用了Redis,能给我介绍一下Redis的数据结构吗
●用Redis的命令存一个Hash结构
2、阿里JAVA后台开发 三面-电话技术面
(0)自我介绍
平时用什么工具观察过虚拟机的内存情况;
(项目)分别介绍一下你的几个项目;
你平时有什么爱好么
你平时是通过什么方式学习的。
(1)基础问题
1.(数据库)分库分表的依据是什么,有用到什么工具么;
2.(java)wait和sleep分别属于哪个类的方法;
3.(java)lock和synchronized的区别是什么;
4.(操作系统)进程与线程的区别;
5.(计算机网络)OSI的七层架构以及每一层都有哪些协;
3、用友一面
(0)八股
1. JAVA的基本数据类型
2. 自动拆箱 自动装箱
3. int 类型的值怎么转成 bool
4. char类型几个字节
5. JVM的引用计数法
6. 一道代码输出题子类继承父类然后输出
7. mysql的死锁问题
8. sql题 连表查询
4、OPPO春招 后端工程师 一面
(0)项目
1.xxx功能怎么实现的,怎么保证安全性
2.API网关跟Nginx有什么区别
3.场景题:流量很大的时候发现响应速度很慢,但是sql语句的查询速度显示正常(即不是查询语句慢的问题),可以分析一下是什么原因吗?(没太理解,然后面试官补充,因为我项目中用了Dubbo,他想问的是在流量突然变得很大的时候,使用Dubbo会有什么问题)
(1)八股
final可以加在哪里,有什么作用
java有哪几种锁
synchronized锁是怎么升级的
对象锁和方法块锁在指令上的区别(太菜了没了解过)
AQS怎么实现公平和非公平
线程有哪些状态
如何查看现在使用cpu最高的一个线程(top -a)
创建线程有哪几种方式
线程池的工作原理(7个参数,及工作流程)
HashSet是如何实现的,如何保证不重复
HashTable可以put一个Null吗(不能,因为需要用key去计算hash值,如果key为null会抛出空指针异常)
HashMap在1.7和1.8之间做了什么优化
ConcurrentHashMap呢
Redis内存淘汰策略有哪几种
Redis如何加锁,如何用Redis实现分布式锁
追问:使用setnx会不会导致死锁(会,必须设置过期时间,使用事务原子命令SET key value EX time NX)
Redis有哪几种高可用部署方式(Redis真不熟。。面试官帮忙说了,主从、哨兵、分布式集群)
Redis如果不用事务命令怎么保证原子性(Lua脚本)
使用Redis分布式锁有一个问题,不管是主从模式/哨兵模式下,如果主节点挂了,key没有同步到主节点,查询不到key就又可以获取锁,怎么解决(Redisson)
场景题:如果锁超时释放了,业务还没执行完,其他线程这个时候是可以获取到锁的,但是不想让其他线程获取到锁,如何解决(用一个定时器/看门狗,在锁快过期的时候去判断业务执行完了没有,没执行完就重置过期时间)
NIO跟BIO、AIO的区别
JVM的垃圾回收算法有哪几种
MVCC主要用在哪里
事务的隔离级别
(面试官本来好像想问一下python,但是我不太熟,只是会用)
Redis缓存穿透是什么,怎么解决
Spring三级缓存为什么要设置第三级
5、小米JAVA开发实习面经
(0)八股
1.JVM的架构,具体阐述一下各个部分的功能?
2.Zset的底层如何实现
3.Mysql隔离机制有哪些?怎么实现的?可串行化是怎么避免的三个事务问题?
4.Spring源码看过吗?Spring的三级缓存知道吗?
5.抛开Spring,讲讲反射和动态代理?那三种代理模式怎么实现的?
6.讲讲线程池?为什么用线程池?
7.集合里面的arraylist和linkedlist的区别是什么?有何优缺点
8.介绍一下计网里面的tcp和udp协议
9.介绍一下http和https的区别?为什么https安全?
10.Mysql有很大的数据量怎么办?怎么分表分库?
11.Redis的基本数据类型?Redis的持久化呢?有何优缺点?
12.B+树了解吗?底层呢?为什么这么用?
(1)算法
算法:链表对折
1-2-3-4-5-6-7对折之后为1-7-2-6-3-5-4 (需要自己定义链表结构,自己导入包和main以及方法命名等)