阿里巴巴面经

我晚上刚健完身,然后去外面吃了一顿猪脚饭。正准备吃呢,突然来了一个浙江杭州的电话。

然后就开始了我惨无人睹的电话一面(人生中第一次面试竟然是阿里巴巴)

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: 你有什么问题

 

posted @ 2018-02-28 13:50  程序员博博  阅读(1754)  评论(0编辑  收藏  举报