冲高级——篇四 之 面试题 (后续继续添加)
面试的阿里
Java基础
a. 是否看过JDK源码(指的是list,spring,map之类的)
答: 看过
b. 是否看过hashMap的源码?底层实现是怎么样子的
答: 说了1.8底层实现是数组+单链表/红黑树,接着又问红黑树的特性是什么?怎么实现的
c. 反射了解么?能说**解的原理么?
答: 了解,反射类似于预加载,捕获异常classNotFoundException可能就是为了防止反射的出错
注解的实现原理是反射,我们在通过反射去加载一个类的时候,能获取到当前这个类的属性,也可以获取到类上面的注解(就答到这里,我意识到可能错了)
d: 了解并发编程么?了解线程池么?创建线程池的参数是什么?了解并发包么?
答: 了解,了解过,线程创建我demo用过两种一种是创建特定线程数的,一种是不限定线程数字的,紧接着又问,假定用第一种创建线程数字为五个,那么当第六个请求过来当前线程池会怎么处理?我回答到有队列会阻塞,紧接着又问:如果过来一个一亿个请求会怎么样?会崩溃,具体的我没有了解过,但是RubbitMQ这个东西有一个峰值削减,当消息队列满了会跳转到错误页面,并发包的什么A什么,C什么我。。不大会e: 了解gc么?垃圾回收算法有哪些?
答: 说了一点原理,标记清除,还有一种从上往下去寻找的(解决循环引用),答的不好数据库
a.了解数据库的ACID么?
答: ACID
A: 原子性
C: 一致性
I: 隔离性
D: 持久性b.能解释下原子性是什么吗
答: 原子性,我就举了银行家转账的例子,保持事务的要么全成功,要么全失败。C.了解数据库的隔离界别么?有哪四种?
答: 不会。D. mysql数据库底层数据的存储结构是什么?
答: 不会中间件
a. 用过Dubbo么?阅读过源代码么?是处于用的阶段还是源代码的阶段
答: 用。。今天就是问个基础,就先到这里了,问了我几年工作经验,我说不到两年,鼓励了我一下,说我掌握的还可以,蛮不错的,知道没用过的,用学过的知识类比,吧啦吧啦,面试官人蛮好的,总体来说被吊打吧,不过很享受这种感觉
1、spring如何处理线程并发问题?
2.tomcat在并发场景中,应该如何优化tomcat,比如再下次8g内存的服务器上,部署4个tomcat,怎么做可以合理调优 人民网面试题
Java虚拟机底层原理与性能优化
1、Java虚拟机内存模型能说说吗?
2、类加载器的双亲委派模型是什么?
3、JVM垃圾收集算法与收集器有哪些?
4、JVM诊断调优工具用过哪些?
5、每秒几十万并发的秒杀系统为什么会频繁发生GC?
6、日均百万级交易系统如何优化JVM?
Mysql索引数据结构与性能优化
1、索引数据结构红黑树,Hash,B+树能说下吗?
2、千万级数据表如何用索引快速查找?
3、如何基于索引B+树精准建立高性能索引?
4、联合索引底层数据结构又是怎样的?
5、覆盖索引与聚集索引到底是什么?
6、Mysql最左前缀优化原则是什么?
BIO,NIO,AIO,Netty以及Redis线程模型
1、BIO,NIO,AIO的区别?
2、什么是阻塞IO以及非阻塞IO?
3、Reactor和Proactor IO设计模式是什么?
4、NIO底层select、poll和epoll实现的区别 ?
5、Java NIO的几个核心组成部分是什么?作用分别是什么?
6、Redis、Netty、Tomcat的线程模型与NIO的联系是什么?hashmap1.7和1.8+
jdk1.8的改动
concurrenthashmap1.7和1.8+
redis网络模型
redis分布式锁
aqs原理
公平锁和非公平锁
synchronized和lock的区别
threadpoolexecutor原理
ArrayList和linkedlist区别和使用场景,内部实现
mysql索引、回表、索引下推
mysql索引b和b+树优劣
mysql分片(写扩散、读扩散)
秒杀系统设计,怎么防止超卖,怎么提高并发
redis源码数据结构
jvm参数设置
YGC、OldGC
tcp四次挥手
tcp和udp区别
如何选择垃圾收集器
垃圾收集器的使用规则和搭配方式
新生代和老年代比例设置
redis和数据库保证数据一致性
redis的布隆过滤器
redis的穿透和雪崩
redis高可用、集群(Sentinal、哨兵)
kafka为什么快(零拷贝、磁盘顺序读写)
reactor和epoll模型
bio、nio、aioDDD
服务治理
负载均衡
RPC
高并发架构设计
用户模块业务
状态机设计1、设计一个调度job,需要注意哪些细节
2、订单的数据表进行分库分表的依据是什么
3、rpc的请求过程,负载均衡应该怎么做
4、订单表在重构迁移的时候,应该注意什么
5、在重构一个业务项目的时候,要做哪些上线准备,需要注意什么
6、是怎么判定一个服务是否存活的
7、不同的业务线的订单处理方式都不同,我们平台这边主要是提供统一的下单接口,然后需要让各个业务线自己去做具体的业务逻辑,这块应该怎么设计可以让不同的业务线订单都能统一的下单且分流到各自的业务线去让他们自己处理
8、迁移微服务的优势
9、如果让你设计一套第四方支付系统,你会考虑哪些方面1、AQS的用处
2、线程池的工作原理
3、阻塞队列的实现方式,为什么会阻塞
4、IOC解决循环注入的方法
5、AOP的实现方式,jdk、cglib的区别
6、代理模式和装饰模式的区别
7、建造者模式和工厂模式的区别
8、线程池运行的线程和队列中等待的线程是同一个吗
9、Spring的事件机制
面试美团
1.Https协议的调用过程
2.CountDownLatch和CyclicBarrier的区别
3.mysql为什么要用B+树做索引
4.简述一下spring中的IOC和AOP
5.java内存模型mysql 索引结构
抢红包,多个人同时抢到最后一个红包,应该怎么处理。
3.16号面试饿了么java专家,这里整理一下面试的问题,一方面供大家参考,另一方面自己复盘:
1.数据库事务的隔离级别?
2.事务的几大特性,并谈一下实现原理
3.如何用redis实现消息的发布订阅?
4.java为什么要在内存结构中设计自己的程序计数器,为什么不使用内核的?
5.分布式事务2pc的过程?
6.redis是单线程的,为什么会这么快?
7.谈谈nio的实现,以及netty是如何设计的?
8.微服务化的时候,什么时候应该拆分,什么情况应该合并
9.什么时候应该使用消息,什么时候适合接口调用?
10.分库分表中如果让你设计全局id,如何设计,我回答雪花算法,继续问,百度对雪花算法的优化了解过没,一脸懵逼
11.redis如何进行单机热点数据的统计?
12.redis集群中新加节点以后,如何给新节点分配数据?
13.如何从含有100亿个整数的文件中找出其中最大的100个?
===========================================
上面这些基本都是课程内容所涵盖的,下面的一些业务场景比较撩人,我就在下面这些问题中翻的车
===========================================
1.银行转账场景中,如果要你对转账这块功能进行设计,你会重点考虑哪些问题?
2.银行转账场景中,a,b同时互转你该如何设计?
3.银行转账场景,并发向某一个账户转账(或者转出),该如何设计?
4.如何实现安全的减库存?我回答用消息最终一致,库存量缓存到redis,每次生成消息前先减缓存,接着问,像淘宝这种平台,某个热销商品,qps很高的情况下,又该如何设计?
tomcat的启动流程,启动机制?
1.HashMap为什么线程不安全?怎样才能让HashMap变的线程安全?
2.MySQL索引的原理是什么?
3.linux常用的命令有哪些?Java虚拟机启动内存参数
Spring Boot启动机制是什么?