​2021 阿里淘系 Java 面经,二面卒!

2021-04-16 10:38:46 浏览数 (1)

今天下午把 JavaGuide[1]上 MySQL 以及书单部分的内容完善了一下。

晚上出去吃了饭,本来是想着写写水文,聊聊近期的生活。不过,看着很多小伙伴被各种面试毒打,我很难受啊,还是做点什么吧!

给小伙伴们分享两个近期的面经,问的问题挺有代表性的,你们可以拿来自测一下!

参考答案我这里也没有,也没时间一个一个帮你们回答。你们可以到 JavaGuide 上找,JavaGuide 上面找不到的,自己搜一下、看看书。

阿里淘系 Java(大三实习)

一面

  1. 首先还是没有自我介绍,直接是项目介绍,项目使用的什么技术栈,里面的一些难点。
  2. 项目中的大致流程,怎么去运行的。
  3. 项目中的容器使用到 MySQL,ES,MongoDB,Redis,这些都是干嘛?为什么要用他们(他们有什么好处?解决什么额问题?),项目中怎么使用的?
  4. 那么你们肯定使用到了索引对吧,详细说说 mysql 索引吧?
  5. 你们建立索引有什么规则?怎么建立的?哪些地方使用到了索引?有什么好处?结合具体场景回答回答。
  6. 索引是 B 树是吧?这个有什么优点呢,为什么 MySQL 要使用 B 树,不用别的呢?(这里我想问下大佬们,除了减少 io 次数,局部性原理,稳定,有序还有什么优点呢?)
  7. 存储引擎了解过吗?
  8. 你使用过 MVC 是吧,具体说说是什么,为什么选择这个,怎么封装的,如何方便?
  9. MVC 是什么?三层架构指什么?为什么使用三层架构,具体说说怎么松耦合的,举例子?
  10. MVC 请求执行流程
  11. 你说说为什么松耦合,你代码中怎么实现松耦合?这样为什么就能体现松耦合,是什么和什么之间的耦合?
  12. Spring 是什么?有什么优点?IOC 具体讲讲,为什么交给 Spring 容器管理就会松耦合,你来具体说一说?
  13. HashMap 底层了解过吧?说说底层吧,数据结构。
  14. HashMap 查询,删除的时间复杂度。
  15. 保证线程安全,为什么推荐使用 ConcurrentHashMap,有什么特点。就只是使用数据结构 cas volatile 吗?除了这些没别的优点了吗?
  16. cas 为什么就比 synchronized 轻量,什么原因,synchronized 怎么调用到操作系统的?具体说说,操作系统消耗什么资源呢?
  17. Java 内存模型,那怎么保证可见性?加锁为什么就可以保证内存屏障?
  18. 内存屏障是什么?具体说说吧?内存屏障为什么保障可见性?指令重排序?happen-before 原则了解么?
  19. 线程这边在操作系统怎么体现的,解决什么问题?在单核 cpu 中线程起什么作用?为什么轻量?
  20. 单核 CPU 线程解决问题,多核 CPU 中解决什么问题?
  21. 怎么设置 CPU 最佳线程数?
  22. 操作系统内存管理?分页?置换算法?有去深入了解吗?
  23. 线程池聊聊?怎么设置线程数,什么时候最优,为什么这么设置?
  24. 好的我这边已经大致了解了,你还有什么想问的吗?(我反问:部门干什么的,我表现怎么样?)

二面

  1. 自我介绍
  2. 项目介绍,技术难点
  3. 看你项目使用到反射,谈谈你对于反射的理解,你在 项目中怎么使用的反射,有什么好处?
  4. 说说 jvm 吧?jvm 怎么样你所了解的?(内存结构,堆,垃圾收集 算法。垃圾收集器,各个特点)
  5. 类加载?双亲委派?你怎么能实现类加载机制?有什么需要考虑的吗?
  6. 使用类加载机制能实现吗?考虑什么问题?
  7. 说说 fullgc 你说说你的了解?jvm 触发 fullGC 老年代没有减少可能是什么原因?
  8. 说说你使用的集合?底层了解多少?
  9. 说说 ArrayList 和 LinkedList 底层有什么区别?说说怎么删除固定的位置的元素?有什么线程安全问题吗?为什么会产生?
  10. 说说 HashMap 的底层原理?数据结构?扩容?
  11. 说说 ConcurrentHashMap?
  12. 说说你的 MySQL 理解?有没有写过什么复杂的 SQL?使用什么优化了吗?你平时是如何优化 SQL 的?如何查看 SQL 语句的执行速度?
  13. 索引说一说?分库分表?
  14. 说说 synchronized 和 volatile?
  15. 说说 url 从输入到回车经历的过程?http tcp(三次握手,对应的状态)
  16. 说说 ARP 协议?
  17. 说说磁盘调度 算法?说说电梯 算法?说说扫描 算法?
  18. 说说 Java 的线程和操作系统的线程是不是一样的?有什么区别?
  19. 说说你理解的线程?说说线程池?几种方式?阿里巴巴开发手册为什么推荐使用自定义线程池?
  20. 说说你的实习?
  21. 说说怎么创建线程?有几种方式,为什么?有什么区别?
  22. 移位操作为什么快?从底层是二进制,补码原码真值回答底层的原理。反问:部门干什么的?我表现怎么样?

二面之后,就没有下文了。这次面试确实有点受到了打击,业务场景确实我菜了。

携程春招 Java 后端

一面

  1. 介绍下项目,热点数据用 Redis 的什么数据结构存储?zset。你这个负载均衡算法中的加权轮训算法怎么实现的?Rpc 项目中客户端调用服务的整个过程?怎么使用 Netty 进行通讯的?
  2. SpringBoot 常用注解?SpringBootApllication由哪些注解组成?由三个注解组成,其中有一个开启自动配置的注解。
  3. 说一下volatile? volatile有内存可见性和有序性,底层通过 lock 前缀的一个空指令实现。
  4. sleepwait的区别?一个释放锁,一个不会,wait 可以无限阻塞,sleep 不能。
  5. 了解哪些设计模式?写一个双重检测的单例模式,为什么要加 synchronized?因为要考虑线程安全,加在类方法和普通方法有什么区别?
  6. 了解注解吗?自己的项目使用到了自定义注解。注解怎么实现的?通过反射实现。反射中获取 class 对象的三种方式?通过 object 类的 getClass 方法,类的 class 属性,class 类的 forName 方法。
  7. 了解哪些排序算法,写一个快排吧。

二面

  1. 详细讲解你的项目,细节与难点。项目中使用的序列器,protobuf 为什么快?
  2. Java 的 io 模型?bio,nio,aio。其中 nio 使用操作系统的 io 多路复用。io 多路复用的实现有哪些?select,poll,epoll。
  3. 写一个多线程的题,线程 1 打印 a,线程 2 打印 b,线程 3 打印 c,要求顺序打印出 abcabcabc。

反问,对自己有什么建议,按校招已经到达标准,由于时间问题没法再深入了解项目,所以也没有什么建议。

整体难度不是很大,不像大厂那样死扣细节。最后求个 hr 面,不然真的要失业了。

HR 面

  1. 自我介绍
  2. 为什么不读研究生了
  3. 工作地点有要求吗
  4. 薪资要求
  5. 有过实习吗
  6. 你这个项目的难点是什么
  7. 比较看中公司的哪些方面
  8. 有其他 offer 吗,哪些公司还在流程中
  9. 过四六级吗?多少分?等下发个英语测评有时间去做下,会根据测评结果安排后续的进程

反问,公司对应届生的培训机制,多长时间出结果。

参考资料

[1]

JavaGuide: https://github.com/Snailclimb/JavaGuide

0 人点赞