适当夸夸面试官(或所在公司)不会有坏处
如果某个问题完全不会(或稍微懂点),直接承认(或略作回答)并把话题引导向类似话题(redis集群的槽机制 -> 一致性哈希)
第二条如果完全不会,可以在表达自己不会之后给与面试官一点反问,表现出自己的求知欲与关注度
所有话题都可以适当性的发散,不要太发散以免显得有备而来
所有问题(熟悉或不熟悉)的回答不要太快,给面试官反应与打断的时间,同时方便自己梳理逻辑,显得沉稳;回答太快容易显得有备而来
一定要乐观向上(至少摄像头下的你看起来得是这样)
80%面试官的80%的问题来自于简历的自写技术栈及第一个项目,这一条真的非常重要
入职阿里40w+(整理)
入职腾讯35w+(整理)
1、什么是幂等,Get和Post的区别 2、Https实现方式 能用私钥加密公钥解密吗 3、希尔排序是什么 4、解释一下【宁用组合,不用继承】 5、List list;可以这样定义吗?为什么?解释一下泛型擦除?为什么java必须强制?(因为别的语言有泛型,java没有,运行时擦除,所以在编译前强制) 6、什么是STW,stop the world,为什么用
7、我能在一个有序链表来进行二分查找么?(不能,没有索引) 8、COW ,copy on write是什么 9、CSRF攻击是什么 10、DMA是什么 11、CPU负载过高怎么处理 12、还有别的 服务器指标吗 13、经常触发FullGC怎么排查处理 14、CPU过高怎么排查处理 15、令牌桶是什么
16、反爬虫怎么做(一开始说的mq削峰,但是如果大流量都到不了mq层,在网关/nginx做) 17、解释一下【数据存取在内存用平衡二叉树(avl,红黑树),在硬盘用b树b+树】 18、解释一下BIO、NIO 19、解释一下多路复用,多路复用需要CPU参与吗 20、为什么Eden与s0s1比例为8:1:1 21、ABA问题怎么解决 22、为什么不用Mysql的缓存而用redis的
单向链表,中间一段做翻转。 比如说12345 -》 14325
系统设计题:直播抢发红包方案设计
2、最有挑战或者说最有意义的项目介绍、针对你说的相关内容随机提问(讲业务项目的时候,我会延伸一下我们公司项目的一些好的系统模块设计方案、与三方平台交互的限流处理设计等。讲技术项目的话,我会说自己搭建的xxl-job调度平台和源码设计,还有一个自己手写的服务探活应用)
4、Set集合的底层原理
6、线程有哪些状态?线程池的原理?怎么实现线程复用?worker线程了解吗?
volatile关键字的使用及原理
公平锁和非公平锁底层实现区别?
Juc并发包常见工具类是否使用过?底层原理是否了解?
7、zk的选举机制具体说一下?
大型项目,当有很多实例节点部署时,zk做注册中心不太适合,为什么?
zk集群宕机了,dubbo服务还能否正常调用?比如说宕机2小时这种的?
8、guava的本地缓存,缓存回收策略。底层了解吗?类似于guava的本地缓存设计思路,你怎么设计一个LRU缓存?
9、rocketmq消息怎么保证不丢失?当下游的服务消费能力有限时,怎么处理?(增加下游服务实例节点、拉取线程等mq参数设置调整、下游服务RateLimiter自身限流等)
10、cannel是怎么结合mysql实现数据同步的?
11、java的双亲委派加载机制,这样的设计有什么好处?
mysql的锁。什么时候加记录锁、间隙锁、临键锁? 意向锁设计的意义?
mysql怎么解决幻读?
有没有遇到过死锁问题、怎么排查和解决?
13、jastack命令有没有用过?jastack查看线程状态主要关注哪些状态?
Cpu使用率高问题怎么排查?哪些问题会导致Cpu使用率高?
你们线程采用的什么垃圾回收策略(PartNew+CMS)?主要关注和设置了哪些参数?
对G1垃圾回收器是否了解?有什么特点?有没有尝试采用G1垃圾回收器对你们的服务进行优化?
FullGc问题的排查和解决经历说一下。
你们线上服务的jvm内存主要参数设置?(我们线上主流服务配置,4核8G虚拟机,新生代3g,老年代2g,eden:g1=6)为什么会那样设置?
1000张票,3个黄牛,卖票及结果统计问题。每卖100个,票价涨100元。类似这样的多线程问题。
三轮面试(两轮技术一轮人事),每轮自我介绍是必须的,简略个人信息介绍
然后大概讲了下工作经历和工作内容,每段工作经历担任的角色
完成的主要工作,贡献内容,带团队几人,离职原因。
- 一条sql执行,在MySQL中的执行流程(考察MySQL架构及各组件作用)
- innodb行锁(显式加锁实现)以及产生间隙锁、next-key锁、表锁的原因
- 分库分表(结合mycat讲的)
- 分布式事务问题(分库分表相关,引出不同系统通信的分布式事务问题以及解决方案)
- 索引问题,主要是索引类型和组合索引优化
- 消费模式为什么只有pull
- log文件的写入(工作原理、buffer刷盘相关)
- 索引(稀疏索引、内存映射是怎么回事)
- 写log和写索引机制(主要为buffer、和内存映射的考察)
- 如何实现高吞吐量的
- ISR、OSR概念和副本在这两者的角色切换,产生的时机
- 多partition、多consumer的partition分配问题,是如何分配的,数量关系不对应会出现什么问题
- 选主问题以及master挂了选主问题,为什么不采用zookeeper的选主策略或借助zookeeper选主
- commitlog存储内容、索引存储内容、队列中的内容
- 消息从生产到消费各环节是如何保证消息不丢的(消息的传输、持久化、offset机制)
- 队列的读写分离(Kafka为什么不读写分离),读写队列不对等会有什么问题。
- 读队列和consumer数量不对等队列分配
- 集群下topic消息发送策略
- 消息的消费模式(pull、伪push),消费者组消费模式(Kafka为什么不支持组内广播)
- 事务控制原理,以及调用同类的事务方法失效原因和解决办法
- service异常处理(事务方法异常处理)
- 架构组成和调用dao方法底层流程(从启动到执行sql)
- 支持的协议、协议特点
- 流程(服务注册、服务发现、服务消费)
- 由于没有项目实战,只讲了gateway、feign、hystrix、eureka的作用及使用,说自己平时研究用的,没有深问
- 主从切换锁丢失问题
- 整个redis集群挂掉,业务服务应对方案(按redis作用讲)
- 批量命令(mget、mset相关)和不同数据类型如何批量修改值
- 生产禁用命令以及原因,scan、unlink命令考察
- 单线程为什么快、吞吐高
- 常用设计模式,项目场景举例说明和具体怎样用的(要求详细讲,应该是怕背题糊弄),我主要讲了策略模式(营销策略)、享元模式(配置缓存、营销规则缓存、流水号自增实现中对缓存的使用)、单例模式(讲的静态内部类实现单例)、工厂模式(营销策略对象的生产)在项目中的使用。
- voliate关键字作用、原理,引出JMM工作模型
- JUC包,主要是各种锁作用和实现(CAS、AQS)和atomic类原理(问到UNSAFE为止)
- 线程池种类、用法,自己new线程池的各个参数含义作用
- 线程池工作原理,主要考察核心线程、非核心线程创建时机。拒绝策略执行时机和有哪些策略,执行后会有什么结果
- JVM模型、常用参数
- Xms、Xmn为什么设置成相同大小
- heap内存划分比例,原因,给出一组配置参数,计算Eden、survivor(from、to)、old区大小
- 线上heap持续增长问题排查(引出OOM dump堆内存设置)
- 线上cup飙升如何用命令快速定位线程
- 服务响应慢如何在线快速分析GC(命令:jstat -gc PID ,然后解读GC日志)
- JVM调优(高吞吐、低停顿怎么调)
- 在线修改JVM参数
11、有什么想问的以及闲聊内容
- 问了下公司的技术栈(cloud、dubbo都有用,不同的事业线技术选型不同,看各事业线老大)
- 了解了下公司业务内容以及规模
- SC体系和ASC体系应对集群容错、限流、熔断技术实现
- 微服务的个人看法,不涉及到具体技术细节了,随意聊了
1、都知道哪些数据结构,collection集合有哪些
5、多线程,多个方法改并行执行怎么做,谁执行最快取谁,怎么做
6、Redis数据结构,如果设计一个延时队列用哪种
9、Dubbo都有哪些负载均衡
14、实现线程的几种方式
15、线程池创建的方式
16、SQL题,查询某天考试所有科目的成绩最高的学生
1、没有自我介绍,直接屏幕展示开始敲代码问问题...
2、几个题目,sql应该建立几个索引?什么情况下用的到?索引排序?
3、主键索引与唯一索引哪个性能好?为什么?
4、三个线程,主线程的A为100,线程1设置A为200,线程2设置A为300,线程3打印A,问并行的执行情况?
5、如果要只打印第一个执行结束的线程值怎么做?(一开始说的主线程轮询,优化方法是CountDownLatch设置为1,主线程监听)
6、更改代码,线程1、2都会打印A的值,如果是先打印200再打印300,那么3打印出来的是什么?(答,不一定,没有用volatile修饰)
7、介绍下项目,你在项目中是什么角色?负责什么模块?
8、拆库了吗?为什么(没有,动态库动态表没有引入分布式事务,而且体量够了)
1、asm(字节码增强相关技术)
3、kafa的零拷贝机制
8、消息堆积和消息延时如何处理
9、网络的七层五层结构
10、es建立索引的原则
12、json序列化的方式以及他们之前的区别
16、分库分表之后的查询怎么搞
17、线上故障定位和排查怎么做的
20、mysql索引的存储结构,mysql为什么不用红黑树作了存储结构
22、某个微服务要调用下游五个微服务如何提高响应时间
23、阿里推荐的新建多线程的方式
1、spring bean的生命周期,作用域,在平时开发中使用spring bean需要注意什么?
2、假设一个类中有a,b两个方法,a中没有事务,b中有事务,a方法中调用b,此时事务是怎样的
3、redis数据类型中的数据结构
4、rocketmq的如何保证消息一致性
1、hashmap中put原理,数组存放的数据是什么样的?扩容说一下?为什么用红黑树?key是否可为空?和concurrenthashmap的区别;hash冲突咋解决?
2、ioc的原理说一下?spring用到哪些设计模式?aop原理
3、线程的状态,线程状态的切换,cas原理,底层实现,和syncronized区别?线程池核心参数,拒绝策略哪些,你们环境中这些参数如何设置
4、jvm内存结构,jvm如何调优,你们设置的多少
5、mysql索引结构,mysql调优,最左匹配原则,a,b,c的一些索引失效场景
6、redis锁结合使用场景,需要注意什么?假设业务执行时间大于设置的超时时间如何解决;
1、redis雪崩,缓存击穿以及解决方案
2、redis缓存怎么使用的?有用过redis的二级缓存吗,你们使用的哪种高可用部署方式,几个哨兵?假设10g内存,导入20g的数据,会发生什么
5、在你们项目中es用来做什么?脑裂咋解决的?大数据量下的查询优化
6、dubbo的工作过程,如何服务治理的,spi,哪里使用了spi?和jdk的区别?有哪些负载均衡策略以及实现原理
7、网关使用的什么,鉴权如何做的
1、加密:使用过了哪些加密技术,加密后的数据很长,数据库加密字段怎么设置的?后台推送给前端的数据怎么加密的?
2、rocketmq怎么保证消息的顺序性,分布式事务怎么实现的
彩贝壳(核心团队来自支付宝、腾讯、美团点评和普华永道)
2、你觉得你在自己的项目,你还可以做哪些优化
3、如果你的业务线越来越多了,你觉得你的代码会有什么问题?
4、如何排查问题,如果用户a和用户b同时使用一个功能,用户b出错了,用户a正常,你从哪些方面排查?
5、有没有印象深刻的bug?怎么解决的?
6、说下常用的数据结构的底层原理
7、线程安全问题怎么解决?
8、你在项目中,Redis是怎么用的?
9、jvm运行机制、怎么调优
10、spring有有用到哪些设计模式
15、你知道有哪些设计模式,并说下应用场景
3、为什么要用stream?并发场景使用stream有做压测吗?
4、线程池参数怎么配置?为什么这么配置?做过压测吗?遇到过线程池拒绝的情况吗?怎么处理的?
6、需要对索引优化,你会怎么做?
8、项目中如何发现慢sql的?在项目中你是怎么优化的?
11、springmvc是怎么解决并发问题的?
12、有经历过jvm调优吗?
神策数据、贝壳、京东面试整理
* Spring Cloud了解多少(这家公司用的不是scn和sca 所以基本上没怎么问,但是其他公司问了)
* 如果让你实现一个配置中心,该怎么做
* MySQL 索引的类别,区别,索引实现原理(B+树的原理,优势),索引优化的方法
* MySQL 事务(什么是事务,用于什么场景,什么情况会死锁,怎么避免)
* MVCC是什么,怎么实现的
* MySQL集群架构怎么做?如果让你设计一个集群架构的服务拆分,数据库部分应该怎么设计
* 缓存穿透、击穿、雪崩是什么,怎么解决
* Redis 持久化机制,RDB和AOF有什么不同,怎么实现的,项目中怎么用
* Redis 集群架构有几种,怎么做的
* Redis与数据库一致性怎么做
* Redis内存淘汰规则有几种(引申手写一个LRU算法)
* 消息组件一般解决什么问题
* ZK如何保证一致性,协议内容及实现原理
* ZK的集群模式,对节点数有什么要求
* ZK 崩溃恢复怎么实现
算法,一般1~2道算法题,这部分得靠刷题
* 设计一个LRU算法
* 两个有序集合找第K大的值
* 一个无序数组,找第K大的值
1、介绍一下限流的那个令牌桶是什么
2、dubbo的用法,原理
3、做了哪些模块 怎么做的
5、sqlServer知道吗 一个表两个字段 一个表三个字段 合并起来有多少个字段
6、表连接有哪几种方式
8、会哪几种设计模式 最擅长哪个 为什么要单例 spring 用了哪些?
9、会写前端吗 vue 用的怎么样
1、讲一下你最近这个项目是做了哪一块的,是怎么实现的?
2、你的分布式事务用的是哪一个?
3、用mq解决分布式事务的原理实现是什么样的,底层是什么样的?
4、你们的这种方式和其他的比如TCC有什么区别
5、JDK1.8有什么新特性?工作中有用到么?
6、有没有处理过高并发?是怎么解决的?怎么保证第一个人能抢到商品
7、你的商城有没有聊天室,在线咨询怎么解决?
8、消息推送是怎么实现的?
9、支付这块有没有做过,微信呢?
10、加班的看法,期望薪资
机试:下午2点机试,早上10点的时候hr发了2份word,大概60页的题库
题目是50道不定项选择,要求正确率80%+
一面:外包公司技术人员
3、介绍下第二个项目,内部有哪些组成,分别是干什么的
4、讲一下你们的API网关,怎么实现的?
5、说一下Guava ,是什么,用了什么功能?
6、对代码风格,代码规范的认识?对用Java写过程代码是怎么看?
7、如果让你去完整设计一个项目,有什么思路?对软件工程的理解?
8、设计模式知道哪些?展开说一下
二面:交通银行技术人员
2、介绍最近一个项目或者比较熟悉的一个项目
3、权限管理是怎么做的,表是怎么设计的?
4、数据表怎么建表,是用工具还是直接create一张表?表是怎么设计的?
5、项目的数据库用的什么
6、左连接和内连接的区别
7、MD5摘要算法是什么,对加密算法熟悉么? 对称加密,非对称加密分别有哪些算法,应用场景?两者有什么不同
8、Redis中存哪些信息?
9、RocketMQ的重复消费问题讲一下?你们的MQ应用场景有哪些
10、sql语句里面的分组,用到的具体函数?having讲一下应用场景,举一个具体的例子
11、服务器部署,运维谁负责?架构是谁搭的?
12、平常的工作是什么?
13、linux命令,在文件中查找一些关键字?
14、前端技术什么水平,vue,h5这方面?
15、设计模式中的策略模式你了解么?讲一下代理模式,有哪几种?
16、说一下数据结构中的栈和堆,对他们有什么认识?
19、开发过程中遇到过什么比较难的问题?怎么解决的
20、技术方面哪一块最熟悉?
5、时间滑动窗口限流原理
6、线程池核心线程数设置的多少
7、你知道Java中有哪些锁
9、非公平锁与公平锁实现区别
12、MySql在RR隔离级别下什么时候会发生幻读
17、单例为什么要双重检查锁
19、多表联合查询与业务层里面进行逻辑拼接的优劣
1、为什么选择分布式微服务而不是单体集群
3、选择SpringCloud后有没有后悔使用了哪些组件
4、假设某市举行选美大赛,候选人有100位,该市有800万人口,根据往年经验,约有30%~40%的人参与投票,每人只能投一票,投票时间为24小时,这个系统你怎么设计
5、假设投票高峰期在投票开始的前15-20分钟,这个时候你怎么设计
6、假设选美大赛升级为全球活动,会有60亿人参与,此时系统需要怎么设计
2、HashMap为什么使用尾插法
3、Hash冲突有什么解决方式
5、常量池在JVM哪里
7、你用过什么设计模式
8、你用到哪些设计思想
1、dubbo服务注册过程
1、写SQL语句分析索引
2、使用SQL语句实现指定的功能
3、Redis底层数据结构
5、MVVC底层数据结构
1、自我介绍 聊各种过去经历
4、阐述一个对象在JVM中完整的生命周期
5、线程池的各个参数 队列有哪几种 各个参数什么含义
饿了么二面(还没面):
1、据说面架构设计 场景 架构合理性 考虑并发及需求对接合理性
2、考虑讲项目的时候顺带带出别的系统 讲述问题的解决 如何解决的
头条一面(Java+项目)
2、讲讲redis里面的哈希表?
5、java单例模式的实现,懒汉、饿汉?
6、进程与线程的区别,多进程和多线程的区别?
7、HashMap原理,为什么用红黑树,红黑树的特点?
8、快排时间空间复杂度,最好最坏的情况,优化方案?
9、TCP的拥塞控制,具体过程是怎么样的?UDP有拥塞控制吗?如何解决?
10、讲讲了解的垃圾回收算法和回收器,什么时候执行STOP THE WORLD?
11、了解Go语言吗?
头条二面(大数据+项目)
3、CAP理论,分区容错性的意义
4、大表Join小表优化,如何处理数据倾斜?
5、 讲一下最大堆和最小堆
6、HDFS的读取、写入,容错处理。(源码)
7、MapReduce的过程(第一版和第二版的)
10、 Hive的内部表和外部表区别、数仓建模模型、数仓分层、雪花模型和星型模型。
头条三面(算法+场景题)
1、LRU算法实现(伪代码)
2、链表倒数第K个数(讲思路)
3、一堆螺丝和螺母用最短时间匹配(代码实现)
4、求每天浏览页面的新用户(Hive QL实现)
5、求抖音小视频每日点击量最高的10个(Hash + 最小堆)
学习更多JAVA知识与技巧,关注与私信博主(学习)