百田(百奥家庭互动)Java一面、二面面经
一面
-
自我介绍
-
你用过哪些数据结构?
-
知道HashMap的负载因子吗,详细讲一下吧?
-
讲一下HashMap最坏的情况,说说他的时间复杂度和空间复杂度?
-
上述的在JDK1.8时做了哪些优化?
-
经典场景题:topK排序
-
如何实现一个子类继承了两个父类/接口(使用适配器模式进行实现)
-
继承是为了解决什么问题?(举策略模式的例子混过去)
-
学过JVM相关的哪些知识点?
-
说说G1吧,讲讲它的垃圾回收步骤。
-
说说你项目中的synchronized的用法吧,是怎么想到用synchronized的呢?
-
除了synchronized之外,还有什么其他的用法实现临界区代码?(ReentrantLock)
-
说说ReentrantLock和synchronized没有的新特性吧
-
如果我不用synchronized关键字,用事务能不能实现你的业务?(在数据库里的写锁就OK)
-
讲讲InnoDB的主键索引的类型吧(hash索引,B+Tree)?
-
那我在中间插入一条数据,B+Tree是如何进行调整的?
-
说说你项目中的根据xxx进行相应的优化,说说你是怎么优化的(用线程池)?
-
那线程池的参数配置有什么讲究?
-
从浏览器输入URL到页面渲染,讲讲这个过程发生了什么?
-
如果是HTTPS又是个怎样的一个过程呢?
-
server包中除了返回公钥,还返回了什么信息?
-
为什么HTTP是基于TCP的呢?
-
说说http1.1新增的keep-alive?
-
你xxx商城的订单模块中订单有哪些状态?
-
你的购物车是怎么样实现的(无登录-> localStorage,已登陆->redis)?
-
那我用HashMap代替Redis可以吗?
-
订单的唯一ID是怎么生成的(snowflow算法)?
-
详细讲讲snowflow算法吧?
-
要你手写一个生成唯一ID的算法,你会怎么做呢?
-
讲讲你项目遇到的一些困难,是怎么解决的?
二面
-
自我介绍
-
讲讲你xxx项目吧?
-
讲讲你这个项目最大收获是什么吧?
-
你讲讲你这个数据加密是怎么做的吧?
-
讲讲你是怎么实现限流的,为什么要怎么做?
-
讲讲你xxx商城的支付是怎么实现的?
-
订单减库存是怎么做的?
-
如何处理过期的订单?
-
如果订单在操作的时候过期了怎么办?
-
说说你的订单表是怎么设计的?
-
说说你项目中的hystrix吧
-
讲讲你xxx项目中的令牌桶算法的原理吧?
-
说说你的xxx项目中的数据是怎么加密的(RSA,讲了加密的原理,具体的处理过程)?
-
讲讲你第一个xxx项目的大体功能吧?
-
说说你这个项目用线程池是怎么优化的?
-
说说项目中的登录模块、权限控制模块?
-
说说你用户表如何设计索引的?
-
说说你这个表有什么可以优化的点?
-
如果说有大量请求进行访问了,你该怎么做(布隆过滤器+Redis)
-
说说你xxx项目中为什么要用synchronized?
-
说说DNS解析的过程?
-
你用过Redis吗,说说你是在哪些应用场景用过?
-
说说Redis的优缺点?
-
Redis为什么是单线程的?
-
再讲讲Redis的数据结构有哪些?
-
你了解过哪些JVM的知识?
-
你对哪些垃圾收集器比较熟悉?
-
你详细讲下G1吧
-
说说STW吧
-
那你说说G1设置的那个暂停时间的作用吧