聊聊最近的金三银四吧
又到了一年一度的金三银四的时节,分享总结下自己最近遇到的面试问题。
深圳阿里
- 快排。
- 二叉树深度优先、广度优先遍历。
- linux相关数据结构问题。
蚂蚁
- ArrayList中的remove是如何操作的?结合底层源码讲述。
- HashMap的扩容过程,如何形成循环链的?
- 你们系统中的支付场景如何保证一致性的,系统的资金流是怎样的?
- JVM内存模型。
- 多线程并发。
- 事务如何处理的。
开思时代
- 支付场景如何避免一笔订单不会重复支付,结合业务来说。
- spring cloud有哪些组件?分别干什么用的。
- 发起一个http请求到微服务项目中,调用其他几个服务,整个执行流程,最好画图讲述。
- jvm内存模型,类加载机制。
- 什么情况用到多线程?结合业务场景。
- 聊聊线程池技术,threadPoolExcutor底层实现,执行逻辑,为什么要用阻塞队列,keepaliveTime做什么用?
- 用到过哪些锁,讲讲AQS,synchronize能否实现乐观锁,ReentrantLock能否实现乐观锁?
- 有没有自定义注解,哪些场景?
- 设计模式用到了哪些?
- 反射是做什么用到?
- 动态代理如何使用,有什么限制?jdk中有几种实现动态代理的方式?
- 实现单例模式的最简单的方式是什么?枚举可以吗?
- redis是如何实现分布式事务的?
- 有没有了解过Agent?
- java逃逸分析。
开思二面
- 有一个接口速度很慢,你的解决方案是什么?
- 关于sql优化你有什么经验,你的解决思路?
- 保证消息不丢失的方式,如何避免重复消费?
- 最近这个项目,最大的难点在什么,给你带来的提升是什么?
- 怎么把控版本质量?
- 你们是怎么做敏捷的?
- 代码量占了项目的多少?人力分配。
有赞
- hashmap底层原理,put,get操作,1.7,1.8。
- concurrenthashmap底层原理,扩容机制。
- redis扩容机制。
- 线程池,threadpoolExecutor流程。
微众银行
- 基本数据类型大小,常量池,文件IO、JDK新特性。
lanmda,steams,base64,并发库,metaspace 替代permgen space,jdeps - 8大数据类型大小。
- 文件操作,字节流。
- 编码的控制方法。
- 系统安全保障,信息数据安全,从权限控制和登录认证过程考虑。
深圳思维
- spring源码,IOC初始化,对象初始化过程,自定义注解实现。
- msql数据库优化,事务隔离级别设置。
- 线程安全的集合,原理和它们的数据结构。
- jdk8新特性。
- rabbitmq路由。
- msql优化,业务中的应用。
鹏元征信
- 连接池优化。
- spingcloud如何封装,你们用的什么版本。
- 对微服务拆分的理解。
- zookeeper的理解。
鹏元二面、三面
- 如何设计一个场景记录上百万用户每天的签到信息,考查redis的bitmap,假如
这个数据量非常大,超过了bitmap的最大容量如何做? - 如何设计一个乐观锁的结构?
- AQS内部具体实现。
- 数据库的加锁场景。
- MVCC多版本控制。
- countdownlatch和cyclelibarrier的区别,都解决了什么问题,顶层实现。
- 项目经历,挑一个项目讲述架构。
- 如何保证版本质量,如何进行单元测试。
- 如何做敏捷的。
腾讯
- 获取字符串最大重复子串。
abcgabcabcabc - redis数据结构,有序集合怎么实现的,底层原理。
- rabbitmq哪几种模式。
点对点,广播,topic模式匹配,使用场景。 - 金额用什么方式处理,什么数据类型,为什么会丢失精度。
- 设计模式(必问)。
- redis实现分布式锁。
- 字符串对象,创建赋值过程。new String()
腾讯微保
- 佣金计算多个维度,如何从技术上考量,避免改代码改数据库,满足多个费率,多种产品的要求。
- 谈谈事务消息的理解。
- springcloud有哪些组件,详细描述。
- 如何设计一个秒杀系统,100并发,抢一台手机。
- 有没有了解过servicemesh
字节(广告部)
- mysql主从复制原理,如何保证一致性。
- binlog存的是什么?主从一致性问题。
- 数据库有哪些索引,非聚集索引结构,聚集索引能有多个吗,为什么?
- pg库和mysql区别。
- 算法题:删除一个有序链表中的重复元素,空间复杂度O(1),时间复杂度O(n)。
阿里(外部电商,支付结算,团队20几人,技术栈springcloud,flink,flume,rocketmq,mysql)
- 过往项目经历。
- mysql优化经历,调优细节。
- 怎么建索引,a,b,c三个复合索引,单个b会命中吗? a,b,c单列索引,and a,and b,能命中哪一个?
- rocketmq对事务消息的理解。
- 如何保证幂等,消息一致性,
- jvm排查经历,优化细节。
深信服一面(安全信息)
- rabbitmq,kafka你们系统用在什么场景?
- 算法题:通过链表构建linklist,实现add,remove,get三个方法。
- 防病毒。
深信服二面
- 阅读一段java程序,对象生成和方法调用的。
- 一段python脚本,执行错在哪里,关于socket发送请求的。
- 求两个无环单链表第一个相交节点。
阿里 (lanzda)
- 过往经历。
- springMVC原理。
- arraylist原理
- 分布式事务的理解。
- 项目中最大的挑战。
索信达(一开始不知道是外包)
- 微服务哪些组件,IO。
- redis分布式锁,缓存穿透/击穿,还有服务的熔断。
- mq的业务场景。
- 微服务中与json相关的注解,spring常用的注解一口气10个。
- 各种锁的使用原理,原子性保证。
- mysql执行引擎
- 自己在项目开发还有其它的工作。
- 多线程,线程池,如何防止死锁。
微众
- 项目经历
- 内存模型,new Object()内存中发生了什么?
- springMVC流程,获取handlerMapping具体是怎样的。
- 分库分表是如何做的。
腾讯 (微信支付)
- redis用来存什么数据,如何做持久化?
- 项目经历,贴合项目。
- 消息队列使用场景。
- 笔试题:给定一个无序的整数类型数组,求最长的连续元素序列的长度。
例如:
给出的数组为[100,4,200,1,3,2],
最长的连续元素序列为[1,2,3,4].返回这个序列的长度:4
你需要给出时间复杂度在O(n)之内的算法。
涂鸦智能
- 了解hashmap底层原理吗?
- 谈谈concurrenthashmap原理。
- 谈谈mysql索引下推,覆盖索引。
- 如何保证redis双写一致。
涂鸦智能二面
- 项目经历
- 敏捷怎么做的
- mysql执行一段update语句经过了哪些层,执行流程
- mysql的redo log和binlog有什么区别,一段sql分析下如何写log,如何做故障恢复的。
涂鸦三面
- 画系统架构图
- 如何平滑的切换老的通讯机,不停机切换如何做。
- redis中对应热点数据,并发读的情况,此时几个请求失效了同时发到数据库中,如何解决。
- 服务治理方面,当下游服务中,有某一个服务响应超时,导致上层调用放一直阻塞等待,同时引发全系统的性能,如何设计方案避免。
- 商品表中关联了订单表,此时已经对商品表进行了分库,如何来查商品表的信息。
- abc,ac,bc如何建立索引优化查询。
快手(支付中台)
- 你怎么定义runtimeException 和unchecked异常。
- 谈谈对volatitle理解,使用场景。
- 5个线程同时执行,并发的执行,设计一种方式,最终5个线程都执行完一起返回。
考查点:countdownlatch - 了解countdownlatch吗,解决了什么问题,用在什么场景,底层怎么实现的?
- 算法:一次跨一个或两个台阶,跨N级台阶有多少种走法?
- 谈谈Mysql的四种隔离级别,各种加锁场景。
- mysql的原子性底层是怎么实现的?
- 谈谈你对索引的理解,mysql中的索引结构分别是怎样的?覆盖索引是怎么样实现的?
- 线程池工作原理。
- 设计一个程序,保证三个线程,a、b、c按顺序执行。
快手二面
- 为什么设计表锁,画图说明,解决了什么问题。
- 系统中的读写锁场景。
- 设计题,如何设计一个秒杀架构。
- 编程题,输入 i am a boy. 输出bo. a am i,不能用split。
快手三面
- 过往项目经历。
- 路由是个什么概念?
乐信(风控)
- 类加载机制,jvm内存模型,新创建一个对象过程,如何进行分配内存。
- 如何保证消息一致性。
- redis持久化机制,如何保证高可用,如何实现主从复制
- 什么是缓存穿透与缓存雪崩。
- mysql索引都有哪些,结构是怎样的
- 什么是覆盖索引,索引下推,加锁场景
- 数据库双写一致
- 高并发,高可用架构设计
- 分布式事务的问题,分布式锁的实现原理。
- sql调优过程以及jvm调优经验
乐信二面
- jvm内存模型,如何创建一个对象一开始就放在老年代。
- jmm模型。
- 谈谈多线程技术,什么是线程安全与不安全,你怎么定义的?
- 操作系统的线程状态有哪些?谈谈理解。
- jdk中实现代理模式有哪几种,分别举例说明,如何理解的,各自有什么优劣势?
- 什么是享元模式?
- mysql索引失效的情况,给你一段sql如何进行优化。
- 消息队列消费如何保证顺序,如何保证不重复消费。
- rocket的事务消息。
- jvm调优主要从哪些方面着手。
中国联通
问了个寂寞,面试官没问啥
美团优选(面向供应商)
- 项目经历
- 架构方面的理论,依赖倒转,里式替换,单一职责,架构方法论,谈谈六边架构原理。
- spring的controller是单例的吗?为什么。
- 工厂方法和策略模式有什么区别,模板方法呢,可以举例讲解。
- 算法:实现二分查找。
- 生产上你写的一个接口突然点不了了,如何快速排查问题?如何快速恢复?
看看哪些人最近登录了,看看最近QPS多少,是不是有大并发,有没有线程阻塞,线程池的逻辑卡死了,接口调用链路故障了, - 如何设计一个延时消息?5分钟一起发送。答通过redis,你不知道消息的体量,放redis你还要保证redis和消息件的一致性。
- mysql谈谈主键索引,普通索引区别,内部结构各是什么?如何进行回表的?命中的流程。
- 什么是覆盖索引,谈谈多版本控制,什么是undo和redolog,加锁原理解决了什么问题?
- 如何保证资金的一致性,上下游系统,你有什么方案?事务消息。
- 最近在看什么书?谈了一堆架构方面的书,职业发展。
- hashmap获取元素时间复杂度多少?为什么。
- spring中想要在初始化之前做一些操作有哪些办法?
OPPO
- 项目经历
- 消息队列,如何保证消费端消息不丢失,不被重复消费。关闭自动提交,手动提交确认。
- http中的timewait,close wait各有什么作用。
- http中状态码100有什么用。
- 解决了什么分布式事务的问题?
- jvm性能优化,比如OOM,你是如何操作的?
- sql调优的经历。
- 批量代发服务和支付路由具体细节。
- mvcc多版本控制中隔离性是如何实现的。
商汤科技
- 操作系统pv操作
- redis list kafka你如何选择
- redis订阅模式怎么实现的
- springboot main函数如何获取application
- aop怎么实现
- cglib jdk反射底层怎么实现
- 反射的对象和new有啥区别
- jvm了解多少
- cms
- 限流,如何实现每次通过三个线程
- 设计模式,你在写代码的时候什么情况下会用设计模式
- 观察者模式详述
- 除了spring其他框架有吗
- mysql索引实现,叶子节点数据结构,有啥好处
- limit有啥用
- 一堆数据里,怎么取6000万后10条数据
- 线程池原实现原理,核心参数
- redis几种模式,每种简单说下
- redis主从机制
- 连续字符串,获取最长不重复的子串长度
商汤科技
- 一个接口如何设置限制访问次数
- 接口如何进行隔离
- 接口访问如何保证不被篡改
- http响应码有几种
- 异常类型有几种,请说出10种常见类型
- 常见的锁有哪些,如何实现的
- jvm内存模型
货拉拉
- 某个热点key全部打在redis的机器上,如何解决。
- rabbitmq中routingkey和交换机是如何绑定的,一条消息从生产到消费,rabbitmq如何运转的?