2019java面试分模块总结
设计模式
1、用到哪些设计模式?怎么用的
2、单例模式的不同写法
JDK
1、聊一下java的集合类
2、HashMap底层数据结构,以及解决hash碰撞的方法
3、Hashmap为什么要使用红黑树
泊松分布
4、集合类怎么解决高并发问题
5、队列的使用问题
6、自定义异常的应用场景
7、Object类中的方法
8、1.8的新特性
9、Java中的静态方法只有一个实例,如果想用多个实例怎么办?
10、Java面向对象的基本特征,继承、封装与多态
11、重写和重载是什么意思
12、怎样声明一个类不会被继承
13、HashMap中jdk1.7与jdk1.8的区别
14、concurrenthashMap 的底层实现原理,是如何实现线程安全的?
15、Java中的自增是线程安全的吗,如何实现线程安全的自增
16、Jdk1.8种的stream有用过吗,stream的并行操作原理,stream并行的线程池是从哪里来的
17、Jdk1.8的completableFuture有用过吗?
18、Java种的代理有几种实现方式
JVM
1、jvm内存模型,以及这些空间的存放内容
2、堆内存划分的空间,如何回收这些内存对象,有哪些回收算法
3、jvm调优,如何解决线上gc问题
4、class初始化过程
5、内存溢出的原因,如何排查线上问题
6、jvm有哪些垃圾回收器,
7、类加载模型
8、JVM为什么要增加元空间?
9、堆G1垃圾收集器有了解么,有什么特点
多线程
1、多线程之间是如何通信的
2、synchronized底层实现,和lock的区别
3、synchronized关键字加在静态方法和实例方法的区别
4、countdownlatch的用法
5、线程池
(1)Executor提供了几种线程池
(2)线程池的参数
(3)拒绝策略
(4)任务放置的顺序过程
(5)任务结束后会不会回收线程
(6)未使用的线程池中的线程放在哪里
(7)线程池线程存在哪
(8)cache线程池会不会销毁核心线程
6、Java多线程的几种状态及线程各个状态之间是如何切换的
7、Java中的wait和sleep的区别与联系
8、如何在方法栈中进行数据传递?
9、ThreadLocal的底层实现形式及实现的数据结构?
10、Sychornized是否是公平锁
11、Sychronized和ReentryLock的区别
12、服务器CPU数量及线程池数量的关系
mysql
1、Mysql的索引类型,底层索引数据结构,叶子节点存储的是什么,索引失效的原因
2、如何优化sql,查询计划的结果中看哪些些关键数据
3、innodb和myisam的区别
4、mysql默认隔离级别,
5、mysql的乐观锁和悲观锁,锁的种类
6、如何用sql实现乐观锁和悲观锁
7、mysql如何分库分表
8、MySQL为什么选择B+树作为它的存储结构,为什么不选择Hash、二叉、红黑树
9、Mysql数据库的事务与锁的理解
10、数据库临时表有没有用过,是怎么用的?
11、多数据源情况下如何进行事物的管理
12、Union和union all有什么区别
13、dateTime和timestamp有什么区别
14、mysql主从模式的实现
15、如何解析sql语句;即explain关键字的使用
16、Mysql的主从同步原理,mysql主从复制主要有几种模式
Spring
1、spring的底层代码,
2、bean的生命周期
3、循环引用问题,以及spring中用到的设计模式
4、spring和springBoot的区别
5、spring的AOP的底层实现原理
6、spring的事务是如何回滚的
7、Spring 是如何解决循环依赖的问题的?
8、Spring IOC的理解,原理与实现
9、Bean Factory与FactoryBean有什么区别?@Bean这个注解时如何实现Bean的注入的?
Mybatis
1、hibernate的区别
2、mybatis的缓存,都缓存些什么,session缓存存在哪
3、mybatis的执行流程,需要了解源码
4、mybatis如何防止sql注入
redis
1、redis的数据结构类型,一般都用在什么场景下
2、sortedSet的底层数据结构
3、利用redis实现分布式锁
4、redis使用单线程的好处
5、redis中如何控制多线程并发
6、redis删除key的策略
7、redis的主动缓存,被动缓存
8、如何保证数据一致性问题
9、集群环境下如何处理,解释一下一致性哈希
10、解释一下缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题
11、排行榜功能的实现:使用redis的zset;zset的底层数据结构是什么样的;除了redis的zset还有什么其他的数据结构可以实现这个功能
12、Redis集群种类:主从模式、cluster模式及其应用
13、Redis种数据类型及应用场景
zookeeper
1、zookeeper如何保证可用性?
2、Zookeeper的原理
3、什么情况下会使用zookeeper,zookeeper如何监听生成的节点,zk内部是如何实现的
4、Zookeeper0、zookeeper1、zookeeper2,三个节点的集群描述一下从zk启动,到zk对外提供服务的整个过程
5、有一个key,往zk写入,到写入成功它的大体过程是什么样的
6、Zookeeper监听器的原理
MQ
1、mq的结构图
2、如何保证消费者是否消费
3、ack返回的种类
4、请求过程服务宕机如何处理
5、什么场景下会使用MQ;MQ的优势与劣势,什么时候不能用MQ
springboot
1、springboot启动过程中做了哪些事情?
2、Springboot 启动类上的注解 @spring boot Application说明?
3、Springboot如何判断当前应用是否时web应用?
4、Spring boot整合jsp的流程,需要注意哪些点
SpringCloud
1、SpringCloud和dubbo的区别
2、项目中用到了哪些组件
3、eureka的原理,如何保证高可用性,和Zookeeper有什么区别
4、feign如何调用的
5、处理生产环境上配置生效问题
6、hystrix的降级策略有哪些
7、Springcloud eureka是如何注册服务、如何监测心跳的,它注册的流程是怎么样的
8、在分布式环境中如何快速发现某一台服务有问题
9、分布式集群系统对外提供接口的时候如何验证对方的身份
10、Eureka和zookeeper作为注册中心有什么区别
Linux服务器
1、Linux如何查看应用占用内存情况
2、Linux脚本编写会么
架构设计
1、如何做一个秒杀系统
2、如何实现高可用、高并发、高吞吐的技术方案
3、A给B发请求,B执行往数据库insert的操作;设计一个架构,保证能够提供最大的并发量
其他小知识点
1、Nginx如何做限流?令牌桶算法与漏桶算法
2、Tomcat调优
3、为什么使用RPC框架,什么时候会使用http请求
4、tomcat启动原理
5、Http协议
6、epoll模型
7、如何实现调用远程服务的接口
阿里淘系面经
一面:
1、聊之前的项目经验,详细描述
2、Java知识体系中整体的集合框架
3、为什么hashmap在jdk8的时候要进行树化(泊松分布)
4、hashmap线程安全的方式(concurrenthashmap源码层次)
5、锁的分类
乐观锁、悲观锁、自旋锁、读写锁、排他锁、共享锁、分段锁的各种机制及实现方式
6、spring IOC的底层实现
XML、dom4j、工厂、单例
7、mysql索引的分类及实现机制
二面
1、介绍项目
2、线程池的创建方式、分类、应用场景、拒绝策略的场景
3、spring AOP的底层实现
动态代理、newProxyInstance、cglib、SAM
4、代理模式
静态代理、动态代理
5、详细介绍自己的设计模式
三面
1、千万级数据量的list找一个数据(抢红包案例)
四面
1、详细项目介绍
2、JVM内存管理
栈上分配->TLAB->新声代、老年代->可达性分析->GC算法->所有垃圾回收器及其优缺点和特点
那到底多大的对象会被直接扔到老年代
G1两个region不是连续的,而且之间还有可达的引用,我现在要回收其中一个,另一个会被怎么处理
CMS的并发预处理和并发可中断预处理
五面
1、百万级int数据量的一个array求和(fork/join)
六面
1、参加面试的是硕士,所以问了科研项目
七面
1、聊人生
2019爱奇艺面经
1、如何验证json格式?要求不使用正则
2、讲一下TCP/IP协议
3、Http 301 302 304的区别
4、四层负载均衡
5、负载均衡的方式
6、一个数组,两个数相加等于N,找到两个数相乘最小的两个数
7、JVM调优
8、docker相关
9、设计模式
10、高并发应用场景架构设计
11、linux命令
百度面经
1、synchrnoized和reentrantlock的底层实现及重入的底层原理
2、锁的四种状态及升级过程
3、CMS和G1的异同
4、G1什么时候引发Full GC?
5、除了CAS,原子类,syn,Lock还有什么线程安全的方式
6、HashMap和Hashtable的异同
7、允许null键的map你知道哪些
HashMap,LinkedHashMap,WeakHashMap
8、为什么hashmap扩容的时候是两倍
9、红黑树的插入时间复杂度
10、解决hash冲突的方式
11、现在有1T的数据,但是只有1G内存,如何进行排序
12、Tomcat为什么要重写类加载器
13、tcp握手挥手过程及其状态转换
14、mysql隔离级别
15、B树和B+树的区别
16、你知道哪些设计模式,它们在JDK源码中是怎么体现的
17、Java运行时数据区
18、常见的垃圾回收算法有哪些
19、吞吐量优先和响应时间优先的回收器是哪些
20、类加载全过程
21、线程池7个参数
22、CAS的ABA问题怎么解决
23、Java内存模型
24、什么叫做阻塞队列的有界和无界
25、说明session和cookie的区别
26、说一下反射,反射会影响性能吗
27、说一些AQS
28、JUC包里的同步组件主要实现了AQS的哪些主要方法
2019菜鸟快递面经
阿里一面
1、java内存模型分为了几块区域?元空间里有些啥?
2、对象存在java内存的那块区域里面
3、string类的用法,string a="Hello" string a = new string("hello")创建的流程
4、NIO知道么? nio底层调用了啥?啥是非阻塞IO?
5、jdk hashmap 底层存储?红黑树的特点,为啥不用数组用红黑树?
6、数据库用过么?用的啥数据库,mysql用的啥引擎?为啥数据库底层用B+树不用红黑树?
7、多线程,AtomicInteger底层用的啥?cas的原理,AtomicInteger用了Voliate么?voliate的原理,变量加Voliate被修改了其他线程能立刻知道么?
8、HBase底层数据存储的结构,HRegion如何分裂?
9、UnSafe类知道么?
阿里二面
1、聊项目
2、由项目聊到高并发,C3P0数据库的优点,不加机器,单体应用怎么优化性能?
3、校园经历
4、一道设计模式的编码题
写代码实现以下业务场景:
“小明和小张去中介找房子,小明要3室2厅的房子但租金不要超过6000,小李的要求是租金不超过1500的都能接受。中介说没问题,你们留个电话,有房子我通知你们”
考察点:
1、面向对象建模
2、观察者或者Callback模式
3、策略模式
阿里三面
1、个人介绍
2、最难忘的项目
3、JVM加载类的过程,JVM的ClassLoading有几种,怎么改变ClassLoading的加载顺序?
4、如何解决Jar包冲突
5、继承的原理
6、对技术那方面感兴趣
7、如何学习一门新技术
2019滴滴面经
一面:
1、自我介绍
2、讲下快速排序,经典快排存在的问题
3、1000万个取其中最大的100个数
3、1 MapReduce的设计思想,但是有内排序的问题
3、2堆排序,堆排序的过程
4、树的中序遍历实现
4.1递归
4.2借助栈
5、介绍下osi7层模型
6、arp协议缓存的过程
7、TCP的控制位
8、TCP的状态
9、TCP建连的状态
10、TCP的头部信息
11、jvm监控系统是通过jmx做的么?再改进中,用的jdk自带的工具
12、java内存结构
13、jvm的栈跟线程关系
14、是每个线程都会创建一个栈还是共用一个栈?
15、介绍volatile的功能
16、总线锁的副作用
17、内存屏障的汇编指令是啥?
18、你有看过什么源码嘛?AQS
19、介绍一下AQS
20、扯到了CAS的原理
21、AQS怎么阻塞当前线程
22、locksupport的park在jvm怎么实现的?
23、你了解垃圾回收吗?
24、垃圾回收器让工作线程停顿下来是怎么做的?
25、GC ROOts对象有几种?
26、gc roots怎么判断一个对象没有被引用?
二面:
1、介绍项目
2、spark用的多吗?
3、在java开发平时做了哪些项目
4、看过源码吗?
5、介绍下ConcurrentHashMap
6、介绍下CAS
7、介绍下volatile
8、手写生产者和消费者
9、mysql的索引失效和优化问题
10、mysql的索引结构
11、回表操作分析
13、介绍下左连接、右连接、全连接查询
14、redis的应用场景
15、redis是单线程还是多线程
16、redis存在线程安全的问题吗?为什么
17、spring aop怎么使用及其原理
18、怎么实现远程rpc?
19、es的应用场景
20、服务被别人攻击,不断刷新页面,怎么解决这个问题
2019京东面经
1、总体说一下集合框架
2、你怎么看待接口和抽象类
3、索引的分类
4、主键索引的设计应该采用B-tree索引还是hash索引
5、设计模式
6、谈一谈DDD面向领域编程
7、说一下hibernate一级缓存和二级缓存
8、说一下你了解的MQ
9、谈一谈你对高并发的理解,你会从什么角度设计高并发程序
10、JUC包里的限流该怎么做到
11、索引不适用的条件
12、说一下NIO和AIO
13、AIO里用到什么设计模式
14、说一下select,poll,epoll
15、谈一下TCP的拥塞控制
16、你知道什么是as-if-serial语义吗,它和happen-before语义有什么区别
17、Executors创建线程池的方式
18、CachedThreadPool里面用的什么阻塞队列
19、那你知道LinkedTransferQueue吗,和SynchronousQueue有什么区别
20、你还知道什么阻塞队列,能具体说说它们的特点吗
21、线程池的线程数怎么设置比较好
22、你知道新出的LongAdder吗,和AtomicLong有什么区别
23、那你知道LongAccumulator吗
2019京东面经
一面:
1、zookeeper在项目中的使用及原理
2、SpringCloud的组件介绍
3、redis相关:
- redis分布式锁的实现方式
- redis为什么要使用setnx?set和setnx有什么区别?
- setNx:系统在10:05 设置一个值,并给出5分钟的过期时间,系统刚刚set完之后redis集群崩溃,10:11分系统重启成功,那么redis中set的值是否还存在?
- 刚刚set完数据之后,能否被持久化到快照或者binlog中
假设redis被持久化,且系统重启事件超过了redis设置的过期时间,那么key是否会被清理?
4、zookeeper的实现方式
5、多线程的实现方式
1、继承thread类
2、实现runnable接口
3、实现callable接口
4、线程池可以进行创建,说明每个参数之间的逻辑关系
6、服务器CPU数量及线程池数量的关系
7、mysql调优
1、性能监控
2、schema与数据类型优化
3、执行计划
4、通过索引进行优化
5、查询优化
6、分区表
7、服务器参数设置
8、mysql集群方式的优化
详细细节可以参考mysql调优的视频
8、如何做一个秒杀系统?
9、对自己技术的认知程度
二面:
1、mysql是集群还是单节点?最大的表的数据量多大?
在公司的环境中,一般都是集群的环境,单表的最大规模是没有上限的,但是考虑到查询性能的优化,一般在几千万左右,超过之后会大程度的影响性能
2、mysql主从同步机制的原理?主要有几种模式?
3、redis持久化的方式?在哪个版本允许分布式使用?
rdb
aof
4、nginx的使用场景
请求转发
负载均衡
反向代理
5、spark的应用场景
6、js闭包
闭包就是能够读取其他函数内部变量的函数
7、离职原因
2019美团面经
1、ConcurrentHashMap底层原理
2、手写一个LRU页面置换算法
3、HashMap底层数据结构
4、为什么用红黑树不用普通的AVL树
5、为什么在8的时候链表变成树
6、为什么在6的时候从树退回链表
7、线程池7个参数,该怎么配置最好
8、说一下volatile
9、volatile的可见性和禁止指令重排序怎么实现的
10、CAS是什么
11、PriorityQueue底层是什么,初始容量是多少,扩容方式呢
12、HashMap的容量为什么要设置为2的次幂
13、你知道跳表吗,什么场景会用到
14、CopyOnWriteArrayList知道吗,迭代器支持fail-fast吗
15、innodb的底层数据结构
16、为什么用B+树不用B树
17、为什么用B+树不用红黑树
18、coding:无序数组怎么寻找第k大的数,写一个二叉树层次遍历
19、不知道大小的数据流取其中100个数,怎样的取法能最随机
20、n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小
21、假设百度每个页面能放100个网页,每个页面都有一个评分,怎样快速找到第8页的所有网页
2019顺丰面经
1、线程池的设计里体现了什么设计模式
2、说说你了解什么设计模式,知道责任链设计模式吗
3、wait/notify体现了什么设计模式
4、线程池7个参数
5、谈一下spring事务传播
6、谈一下IOC底层原理
7、怎么判断内存泄漏
8、怎么在日志里排查错误,该用哪些Linux命令
9、mysql原子性和持久性怎么保证
10、怎么解决幻读
11、innodb和myisam区别
12、索引分类
13、对象的创建过程
14、对象在内存中的存储布局
15、对象头具体包括什么
16、对象怎么定位
17、堆的划分
18、对象怎么分配
19、具体讲一下CMS流程
20、锁的四种状态
21、Object obj = new Object()这句话在内存里占用了多少内存
22、synchronized和reentrantLock的异同
以下是一份3年的简历内容,我只看了其中软件技能部分,大概会问以下问题,欢迎各位一起回答一下。这些问题都不难,要全都答上!
欢迎各位通过提交作业的方式参与下!
以下是根据一份球友上传的2020应届生简历,我大概看了下,可能会问得一些问题。欢迎大家通过交作业的形式参与进来。
『熟悉 JVM 及简单调优,熟悉多线程, JUC 包,阅读过相关源码;』
JDK、JVM和JRE有什么区别?
如何设置堆大小?
如何知道堆大小设置的是否合理?
创建多线程有几种方式?
『熟悉关系型数据库 Mysql,了解 InnoDB 存储引擎,索引与事务相关底层实现;』
什么是关系型数据库?除了关系型数据库还有其他数据库吗?
关系型数据库和其他数据库有什么区别?有什么优缺点?
InnoDB中索引如何实现的?使用了什么数据结构?
B树、B+树区别是什么?
『熟悉计算机网络相关协议,学习过操纵系统、数据结构、算法相关课程并掌握;』
计算机OSI七层模型?
TCP三次握手四次关闭的流程介绍一下?
为什么是三次握手,2次或者4次行不行?
手写快排。
两个文件,各存放50亿条URL,每个URL占64字节。内存限制是4G,找出两个文件中相同的URL
描述一下网页中输入网址敲击回车之后的全过程。
『熟悉 Springboot, Spring, SpringMVC, Mybatis, Netty 等开源框架;』
Spring IOC ,AOP原理?
Spring bean的初始化过程?
Spring bean注入有几种方式?
jdk和cglib动态代理有什么区别?
Mybatis和Hibernate有什么区别?
『了解 Redis,消息队列等开源中间件,了解分布式基础理论, CAP, Paxos 等;』
什么是CAP?如何证明CAP?
简单介绍下Paxos解决的是什么问题?
『熟悉 IDEA/Eclipse/Vim 等开发工具,熟悉 Maven, Git 等管理工具,熟悉 Restful 编码风格, Postman 测试工具。』
GIT和SVN有什么区别?
maven有什么用?如何解决jar包冲突?
『电商秒杀项目』
QPS从430提升到850做了什么?QPS是850的时候,RT是多少?
Redis预减库存后,如何同步到数据库?失败了怎么办?
数据库如何防止超卖?
如何防止恶意秒杀?如何防止脚本秒杀?
『熟悉消息中间件RabbitMq的使用及其实现原理。』
项目中使用过Rabbitmq,是什么场景使用的?不用的话能不能解决问题?
Rabbitmq和其他的同类消息中间件相比有什么优缺点吗?
Rabbitmq如何保证不丢数据?
如何保证消息的消费不会重复?
什么是业务幂等,什么是请求幂等,你们采用的哪一种?为什么?
如果业务层没有做到幂等,还有什么办法在数据库层面避免脏数据产生吗?
『有扎实的Java基础功底,熟悉JVM内存模型、Java高级特性和类库』
JVM内存模型介绍一下吧。哪些部分是线程共享的,哪些部分是线程独享的?
堆和栈的区别?
数组分配在堆还是栈?
所有对象都在堆上分配内存吗?
什么是逃逸分析?什么是变量替换?什么是栈上分配?
如何查看堆的使用情况?如何分析堆内存溢出问题?
线上频繁FGC如何排查和定位问题?
『熟悉Java网络与服务器编程、Java多线程编程等。』
什么是线程,进程?并发和并行?
并发编程用过哪些关键字?
synchronized的实现原理?
volatile的实现原理?
volatile为什么不能保证原子性?
双重校验锁实现的单例中,用了synchronized为什么还要用volatile?
知道什么是CAS吗?知道什么是乐观锁吗?
『熟悉Mysql数据库,了解sql诊断和性能分析策略,有sql优化和数据库运维经验。』
做过哪些SQL优化?
数据库有慢SQL,如何排查问题?
慢SQL会引起什么问题?
B+树索引和HASH索引的区别?
B+树索引中叶子节点上存储的是什么的东西?有什么区别?
什么是最左前缀匹配?什么是索引下推?
索引越多越好吗?
数据库挂了怎么办?
关系型数据库和NOSQL有什么区别吗?各有什么优缺点?
『熟悉Nosql数据库Redis,了解Redis事务控制;主从复制及持久化恢复等。』
Redis的线程模型?
单线程的Redis如何保证高效的?
Redis的事务控制怎么理解?
如何解决缓存和数据库之间的数据一致性问题?
『熟练使用常见的开源框架,如Spring, Dubbo, Mybatis, SpringMVC,SpringBoot,SpringCloud等』
为什么要使用Dubbo?
SpringBoot的starter机制了解吗?
MyBatis和Hibernate有什么区别?为什么用MyBatis
『熟悉linux系统常用操作命令』
Linux机器LOAD飙高如何排查?
19年12月毕业的硕士,简历中重点是项目部分,这一篇来看下如何针对项目问一些技术问题,因为是应届,所以很多问题并没有展开,如果是工作几年的开发,会问的更深入。
项目:分布式电商网站后端开发
项目介绍:此项目为了练习熟悉和开发分布式的服务端设计与实现, 基于 Spring 框架分布式地实现电商网站所需
的所有基础功能 (用户, 商品, 支付, 订单, 购物车). 首先利用 Mybatis 和 MySQL 作为数据库的交互和存
储工具, 利用多个 Redis 实例作为分布式缓存, 最后启动多个 tomcat 实例形成实例集群并用 nginx 实现
负载均衡功能, 以提供更强的性能.
技术栈:
• 基于 Spring MVC
• 多 web 实例实例架构
问题:
这个项目中你主要担任的是什么角色?简单介绍下你负责的功能
如何理解分布式,和集群有什么区别?
你们的项目室分布式部署的,那么是用户、商品、订单等模块是独立部署的的吗?
那多个业务模块之间的系统交互是如何实现的,用的RPC框架吗?
哪种RPC框架?Dubbo和gRPC有什么区别?优缺点对比?
下单的时候,支付和订单扣减有没有遇到过数据不一致的情况,如何解决?
Mybatis是干什么的?
Mybatis和Hibernate有什么区别?
你们的商品表是怎么设计的?什么是SKU?
库存的扣减是怎么进行的?如何避免超卖?
购物车的组合支付是怎么做的?如何保证原子性?
你们的数据量有多大?订单表大概有多少个字段?
Redis具体在什么场景中使用作为缓存?
如何保证Redis和数据库中数据的一致性?
缓存击穿有了解吗?
什么是负载均衡?
介绍一下nginx实现负载均衡的具体方案
Spring的IOC和AOP介绍一下?
Spring中bean的生命周期介绍一下
Spring中bean是单例的吗?
你在项目中有遇到什么技术难题吗?你是如何解决的?
你觉得你们做的电商网站有哪些还可以优化的地方吗?
应届毕业生,简历主要部分见图1
应届生校招,我面试的时候,主要还是Java基础,这一部分基本占到80%左右,针对以上简历,我大概可能问的问题如下:
一、个人技能部分(只问了简历中写的内容)
1、线程和进程的区别?
2、Java是单进程还是多进程?
3、Java虚拟机做GC的时候为什么会stop the world
4、如何理解高并发?多少并发量算是高并发?
5、如何应对秒杀这种高并发场景,谈谈自己可能得实现思路
6、知道几种排序算法?时间复杂度和稳定性分别说一下?手写快排。深度优先搜索和广度优先搜索手写其中一个。
7、什么是OSI七层模型,介绍下TCP三次握手,四次关闭。
8、为什么要3次握手,2次或者4次有什么问题?
9、知道什么是TCP粘包吗?
10、直到IPV4 和 IPV6的区别吗?
11、Mysql和Redis有什么区别和联系?
12、有了Mysql为什么还要使用Redis
13、Mysql的常用引擎有了解吗?区别是什么?
14、Innodb的锁机制介绍一下
15、死锁的四个必要条件,避免方法
16、什么是数据库连接池?为什么要用?
17、有40亿个不重复的unsigned int的整数,没排过序,现在给一个数,如何快速判断这个数是否在这40亿个数当中。
二、项目经历部分(只挑了其中一个项目问)
1、什么是负载均衡,如何使用Nginx实现的负载均衡?
2、Nginx实现的负载均衡是几层负载均衡?
3、介绍下你理解的单点登录和你的实现方式?
4、Spring Session的核心原理
5、权限统一校验你们怎么做的?知道什么是RBAC吗?
6、为什么使用拦截器实现?为什么不用开源的框架?
7、Spring 拦截器的实现原理?和监听器的区别?
8、为什么要用分布式锁,不用行不行。
9、详细阐述Redis实现分布式锁的技术方案
10、其他实现分布式锁的方案对比。
11、如何对宕机死锁的情况进行优化的?效果如何?
欢迎大家以作业的形式回复你的答案!
今天帮球友看了一份简历,他的简历内容写的很好,该突出的亮点都突出了,排版也是我比较喜欢的那一种。
他是一名应届生,作为一个面试官,看了他的简历之后我可能会提出的问题我总结了一下,可供大家参考:
1、为什么做阿里巴巴规范的认证,你觉得这个规范的作用或者意义是什么?
2、阿里巴巴Java规范中哪条规则你印象最深刻?知道背后的原理是什么吗?(加分项)
3、为什么规范中规定不让使用Executors定义线程池?
4、你对JVM了解多少?堆和栈的区别是什么?
5、数组是在堆上分配内存还是栈上分配内存?
6、知道如何设置堆内存大小吗?调优有了解过吗?
7、关系型数据库和NOSQL的区别是什么?为什么要使用NOSQL
8、都了解过哪些NOSQL框架?区别是什么?
9、mybatis和Hibernate的区别是什么?各自有什么优缺点?分别适合什么场景
10、SpringBoot中starter的原理是什么?
11、为什么SpringBoot应用可以直接通过main函数启动。(加分项)
springboot的自动配置
https://blog.csdn.net/u014745069/article/details/83820511
12、知道什么是数据库范式吗?
13、Set和List的区别是什么?HashMap是线程安全的吗?和hashtable、concurrenthashmap的区别是什么?(加分项)
14、说几种你用过的设计模式?单例模式知道吗?单例可以被破坏吗?(加分项)
15、HTTP常见错误码说几个,404、500、403等等。
16、TCP/IP七层模型说一下,TCP/UPD区别?知道什么是HTTPS/http2吗?(加分项)
17、用过LINUX吗?常见的命令知道吗?(ping、top等是加分项)
18、知道maven、git等工具吗?介绍下作用?
19、说一下www.taobao.com在浏览器中访问的全过程(DNS、负载均衡、MVC等是加分项)
20、手撸快排
自我介绍
项目介绍
(项目介绍中提到自己用了缓存、解决过并发问题)
项目中使用的哪种缓存工具?
Redis的选型是自己做的吗?
Redis和memcache的区别有了解过吗?优缺点对比
如果让你重新选的话,你会如何选择?
项目中如何解决的并发问题?
乐观锁如何理解?
数据库中如何实现乐观锁?
Java基础中哪部分最了解?
HashMap、HashTable、ConcurrentHashMap区别?
Java 8 HashMap做了哪些优化?为什么引入红黑树?什么情况下会转成红黑树?
HashMap如果用在并发场景会出现什么问题?
Java8中的Stream了解有多少?
List.subList有了解吗?有啥问题吗?
fail-fast是什么?
什么是异常链?
finally和return的执行顺序?
什么是泛型的类型擦除?
JVM内存结构?
你知道哪几种垃圾回收算法?
堆和栈区别?HIT优化了解吗?
NIO AIO BIO区别?
三种IO的原理有了解吗?
地址输出taobao.com后,看到页面之前的全流程?
一道和并发相关的在线编程题
------------------------------------
大概就是这么多,因为项目实在没什么亮点,没有分布式经验,所以只能多问些Java基础,这次基本考察到了集合类、枚举、异常、JVM以及IO等知识。以上问题,可以回答上80%左右即可通过这轮面试(并不要求全部都非常完美,至少思路、以及面试官想听的一些关键词要提及到)。
今天去面了广州巴图鲁公司,从下午2点开始笔试到面试完都六点半下班了,感觉收获挺多的,特此分享给星球内的小伙伴
笔试题总共就4道大题,其中3道编程题和一道数据库查询问题,这里就不贴了,想知道的可以私聊我
主要是技术二面的问题比较有难点,下面是我回忆得上来的
1.synchronized在jvm层面上是如何实现的?
2.Jvm的方法区存储了什么,有什么作用?
3.java堆的内存分配?
4.eden区和survivior区的比例,为什么survivor区分为俩块?
5.谈一下索引的原理,遵从什么原则
6.索引的类型,聚簇索引是什么,举个例子
7.复合索引(A,B,C),如1-> AC ,2->BCA,3-> CB,问哪种会用上索引
8.谈一下设计模式有几种?哪几种?
9.Spring使用了什么设计模式?
10.讲一讲FactroyBean?
11.redis有几种持久化方式?假如系统发生BeSafe,描述一下是如何持久化的?
12.ArrayList的原理讲一讲,扩容等
13.项目中使用到ReetrantLock,在分布式不同进程下如何解决?
14.假设在分布式环境下,客户端访问系统超时,查看服务器内存没有溢出,CPU没有大飙升,日志也没有明显报错,如何定位问题?
15.full GC问题如何定位?
16.线程池有哪几种?有哪几种拒绝策略?如何自定义拒绝策略?使用的消息队列有哪些?
17.项目中你怎么使用线程池,为什么要使用线程池?
18.NIO是什么?跟普通IO的区别?如何实现普通IO和NIO一样的效果?
19.实现了一个Runnable方法,方法未声明异常,程序中抛出一个运行时异常,如果有其他线程也在执行此程序段会发生什么情况?
20.多线程执行,我想当一个线程执行到某个程序段阻塞下面的程序等待其他线程后再全部执行,怎么实现?