二本本科生,十面阿里巴巴的心路历程

前言

项目方面参考意义不大,所有问题均未涉及

笔者技术水平有限,可能面试难度较低,如果对您没有帮助,请见谅

2次HR面就不放了,看到大家的面经都没谈到HR面,担心写出来可能会承担不必要的风险。

看完可关注: bestsort

感谢 CBU 和 CRO 的所有面试官, 特别是CBU一面的小姐姐, 在我尚未经历几次面试的时候给了我特别多后续准备和发展的建议, 也感谢两位内推人的积极跟进~

CBU

一面2.20(46min)

1.项目相关介绍,没太大参考性就不写了~

2.String 为什么不可变, 处于什么考虑

3.String s1="abc", 这一语句执行后数据在Java中是如何存储的

4.String s1 = "abc", String s2 = "ab"+"c", 创建了几个对象

5.HashMap和ConcurrentHashMap简单讲一下(聊了hash、数据结构、扩容、线程安全性、不同版本比较)

6.红黑树、B+树

7.多线程如何实现对线程间共享内存的保护

8.Java内存模型

9.volitail如何保证可见性

10.了解哪些设计模式

11.模板方法和代理模式的比较、适用场景

12.有没有尝试过JVM调优、dump内存

二面3.18(28min)

1.多线程的几种实现方式介绍一下

2.运行时异常和一般异常的区别

3.HashMap、ConcurrentHashMap

4.HTTP、HTTPS介绍一下

5.UDP、TCP介绍一下

6.多态体现在哪些地方

7.堆排序、归并的原理

8.代理模式,聊了聊JDK代理的源码

9.项目相关

10.看过哪些项目的源码

11.最近在看什么技术类的书,收获。聊了聊书上的redis相关内容

12.一面中回答最不好的问题,现在怎么去解决。

BU笔试

给 n 个字符串,格式类似 “stringA, stringB”,表示这两个字符串之间有某种关系,关系是可以传递的,最后给 m 个询问 “stringA? stringB”,让判断 stringA 是否和 stringB 有关系。也就是说,如果 a 和 b 有关系,b 和 c 有关系的话,那 a 和 c 也是有关系的。

四面4.2(36min)

1.项目相关

2.觉得知乎哪个地方实现最复杂

3.知乎的关注列表在数据库层面如何实现

4.上面三个题30分钟,后续就是谈人生了

五面4.7(22min)

1.Redis I/O模型、数据结构

2.synchronized 和 lock 的比较

3.线程状态,状态之间的切换、生命周期

4.等待和阻塞的区别

5.TCP如何保证消息的可靠传输

6.数据库的索引机制。

7.最左匹配,结合B+树的实现和查询机制聊了聊

8.缓存雪崩

9.三种限流算法

交叉面4.8(30min)

1.Java内存区域划分

2.ConcurrentHashmap 扩容

3.CAS

4.敏感词过滤,时间、空间复杂度(字典树->AC自动机)

5.进程通信

6.管道和重定向的区别

7.OSI模型

8.TCP、UDP区别

9.MySQL查询优化器的优化过程(只讲了择路和成本估算)


后面就是HR面了。 然后挂了。。。写这篇文章复盘的时候发现问的东西相对其他面经真的都很简单, 虽然最后没能如意,不过还是感谢CBU的所有面试官,感谢他们牺牲个人时间来面试我这个蒟蒻。 也感谢各位面试官给出的建议和鼓励~比起我面字节时的自闭而言真的不要好太多~(不针对字节,单纯就是因为我太菜QAQ)

CRO

一面4.17(1h10min)

1.保证双十一期间交易的一个正常、顺滑进行能从哪些方面去考虑

2.常用限流方案

3.支付宝付款的大概设计思路

4.tomcat默认连接数

5.tomcat如何打破双亲委派模型

6.类加载器和类加载过程

7.用什么方法自己实现一个ClassLoader

8.遇到过栈溢出吗,什么情况下会遇见,在哪些内存区域

9.什么情况下会发生GC

10.如何手动触发GC

11.GC算法原理

12.快排时间复杂度,原理,优化

13.线程的状态

14.CPU占用过高如何排除

15.tomcat启动后是通过什么协议对外提供服务

16SSL握手流程

17.从安全的角度来看HTTP/HTTPS可能会存在哪些风险

18.XSS、CSRF是什么,怎么防范

19.Cookie有哪些风险

20.英语怎么样

21.平常学哪些课程,说了测试、需求、项目管理、体系结构设计

22.有哪些常用的测试方法

23.自动化测试、CI / CD有没有了解过

24.数据库隔离机制的实现方式

二面4.21(45min)

1.拿了那些offer

2.用过Linux没有,如何查看线程的情况。如何根据最近修改时间逆序查看文件

3.重写equals为什么要重写hashcode

4.Hash冲突解决方案

5.将一个二元组排序, 排序的过程(不知道为什么突然抛出了个简单问题)

6.根号5开根(二分/牛顿迭代)

7.斐波那契第n项(迭代/矩阵快速幂)

8.2个大文件, 比对相同行(对每一行摘要,建字典树. 摘要相同的逐字符比对,聊了聊具体的时间/空间复杂度,总共耗时15min)

9.MySQL 常用engine(这个问题遇见了好多次... 聊了聊MyISAM和InnoDB的索引结构、表结构和log)

10.反问

三面4.23(1h14min)

p.s : 最自闭的一面,没有之一 QAQ

1.雪花算法(从项目聊数据库拆分聊过来的), 如何查询

2.防盗链方案

上面两个问题加项目的一些问题共计花了30min, 接下来的40min全程自闭,就只为问了一个问题单机8核心16G内存如何排序1T文件。包括以下小问题:

IO 方式

线程个数

线程之间如何调度

每个线程的任务

归并排序的具体流程

第一次归并后接下来的流程

多机大文件排序

我曾天真的以为, 这一类问题说一下多路归并的流程就差不多了,然而遇见面试官详细到伪码级别的问题直接炸锅... 好在面试官手下留情,勉强让我过了。。。

读者福利

最后给大家分享:Java面试题总结+各知识点学习思维导图

欢迎正在学习或者工作中的Java程序员朋友们加入Java架构学习交流:736398039  ,关注、转发、评论,每天分享java 知识,赠送Spring面试专题、Dubbo面试专题、Redis面试专题、Netty面试专题、zookeeper面试专题、Spring cloud面试专题、。。。。。。等等

点关注,不迷路;持续更新Java相关技术及资讯!!!

原文作者:bestsort

你可能感兴趣的:(二本本科生,十面阿里巴巴的心路历程)