我晚上刚健完身,然后去外面吃了一顿猪脚饭。正准备吃呢,突然来了一个浙江杭州的电话。
然后就开始了我惨无人睹的电话一面(人生中第一次面试竟然是阿里巴巴)
1. 项目:Java高并发秒杀系统
如何优化:
用了redis缓存,spring的声明式事物
2. Java基础知识
ConcurrentHashMap你知道多少
Java基本数据类型(byte, short, int, long, float, double, boolean, char)
接口实现接口用extends
Java垃圾回收机制(标记清除算法, 标记复制算法, 标记整理算法)
类加载机制:“通过一个类的全限定名来获取描述此类的二进制字节流”,双亲委派模型
启动类加载器 -> 扩展类加载器 -> 应用类加载器
线程如何同步(volatile + JMM模型,锁也行)
Java是静态语言
3. 数据结构
图遍历(dfs + bfs)
二叉树特性:
性质1:在二叉树的第i层上至多有2i-1个结点(i≥1)。(数学归纳法可证)
性质2:深度为k的二叉树最多有2k-1个结点(k≥1)。(由性质1,通过等比数列求和可证)
B树和B+树的区别:
由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,
但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫
,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引,而B树则常用于文件索引。
4.计算机网络
osi七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
三次握手四次分手
http协议(HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写)
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
HTTP是一个无状态的协议。
HTTP 5xx状态码(服务器内部错误)
5.算法
链表反转用O(n)复杂度 剑指Offer原题,用三个指针(left, mid, right三个指针)
6.总结
其实说实话问的都很基础。但由于我复习还没有到位,而且很多东西都忘了。
而且当时我在吃猪脚饭,外面的车和人呼呼的过,太吵了,很多都没有听清。
答是答出来了,但很多没有答全,而且细节也没有答好,感觉要GG
第二次流程:
一面(2018年4月17日):
1: 项目:redis放到MySQL这中间一段时间,如果有大量用户涌进怎么办
2: TCP三次握手过程
3: 第二次握手出现问题怎么解决?
ans: 超时重传机制。大概5次就认为失败了。
4: 第三次握手出现问题怎么解决?
ans: 此时客户端认为连接已经建立了,但由于第三次失败,那么服务器端就没有建立连接。服务器端就会多次催促客户端,我还需要一个ack。如果多次请求收不到,那么就认为此次三次握手失败了。
5: 滑动窗口
6: arraylist多线程扩容。
ans: 可以直接抛出一个异常给客户端 (尽早的抛出错误,这是面试官一直想要的答案,但我一直没get他的点,很伤神。)
7: arraylist for循环的时候删除元素
8: HashMap for循环删除元素
9: redis持久化
ans: RDB,fork子线程定时执行。AOF,类似于添加日志,添加一条执行一条
10: MySQL底层索引用的什么结构
11: 设计模式
12: jvm内存怎么管理的。
ans: 栈 + 堆。堆又分为新生代和老年代。新生代又分为Eden + from survivor+ to survivor
13: 线程池 (newFixedThreadPool, newCachedThreadPool, newSingleThreadExecutor, newScheduledThreadPool)
14: 线程池拒绝策略。(抛异常,不抛异常,LRU抛弃最早的,阻塞主线程,用主线程来执行)
二面(2018年4月20日)
1: MySQL存储引擎 (InnoDB)
2: 索引结构 (B+树) 是否为平衡树?
3: 树的遍历
4: explain命令
5: 谈一下对Spring框架的理解 (IoC, AOP)
6: AOP底层如何实现 (HandlerInvole, MethodIntercepter)
7: Spring的单例 是否为线程安全? 看bean的具体类
8: HashMap是否为线程安全
9: JVM模型
10: volitile有没有了解过?
11: 代码如何编译打包部署?maven用过没有?
12: 没有eclipse如何编译Java代码?
13: ant有用过么?
14: rpc远程调用有没有用过?
15: Java中的锁
16: 死锁产生有没有了解?
17: 如何避免死锁?
18: 最近在看什么计算机的书?
19: 本科没有想到去读硕士嘛?
20: 什么时候可以实习?
hr面(2018年4月24日)
1: 内部推荐?谁推荐?
2: 大三没有考研的打算?
3: 成绩如何?
4: 你之前有过什么实践的经历?
5: 除了在公司,有没有跟着老师做一些项目?
6: 自己找了什么项目来做
7: 项目做了多久
8: 大学学习计划如何
9: 以后想往什么的方向,为什么?
10: 怎么达成这个目标
11: 周围有没有特别崇拜的技术牛人
12: 参加acm成绩不理想的原因?
13: 周围人怎么评价你,你自己怎么评价你
14: 你在校最要提升的是什么
15: 实习计划
16: 你有什么问题