阿里实习内推面试(被拒)

简介: 面试职位: Java 研发工程师我到了二轮,被刷了,原因不明,大概是我太菜了(╥_╥)。还记得二面最后问面试官觉得我怎么样?面试官说放心吧。放心吧...放心吧...嘤嘤嘤,哭给你看哦不过总结还是要的,虽然被刷了,但有其他公司的面试还在等着我啊!还是那句话,失败乃成功之母,我几乎记下了所有面试官问到的问题,由于不能透露具体题目,这里列一下大概的知识点(句号后面是我当时回答的思路):一面面试时间30分钟左右。

面试职位: Java 研发工程师

我到了二轮,被刷了,原因不明,大概是我太菜了(╥_╥)。还记得二面最后问面试官觉得我怎么样?面试官说放心吧。

放心吧...

放心吧...

嘤嘤嘤,哭给你看哦

不过总结还是要的,虽然被刷了,但有其他公司的面试还在等着我啊!还是那句话,失败乃成功之母,我几乎记下了所有面试官问到的问题,由于不能透露具体题目,这里列一下大概的知识点(句号后面是我当时回答的思路):

一面

面试时间30分钟左右。

主要是关于计算机网络 TCP/IP 的知识以及操作系统的知识。

先问了一下在学校里各科的成绩,不提...

全局唯一有序 ID。 snowflake ,timestamp 加前面,然后后面加上机器 id 等

冯诺依曼体系

shell 命令的执行过程

信息熵

程序运行中的栈式结构,栈溢出***

TCP/IP 有关知识。TCP 传输层加端口号,IP 网络层加 ip 地址;路由器就主要工作在 IP 网络层

同步与阻塞

并行与并发

Java 线程的本质,内核线程与用户线程,线程调度,并行级别

内核态与用户态,中断

CPU 与内存与磁盘

缓存行与伪共享

内存分配管理,段页式。jemalloc

二面

二面时间40分钟左右。

主要是关于自己写的项目以及自己的学习生活。

还是先问成绩,不提...

Java 程序的运行原理

普通可执行程序的运行原理

缓存行与伪共享。两个面试官都问,可见十分重要,还好都答出来了

从浏览器发出请求开始,到服务端应用接受到请求为止的过程

HashMap ,hash 碰撞,hash 算法的优化

单点登录

正向代理与反向代理

反爬机制,爬虫模拟浏览器行为

cglib 方法拦截

动态代理

依赖注入

Servlet 的本质

TCP 长连接。心跳包,websocket

Netty 百万级长连接优化

DSL 解析到 AST 。lexer 和 parser

JVM 相关。(你读过 GC 相关源码吗?)

代码规范,包命名规范

大学里最有成就感的事

读过的 Java 书籍。(四大名著之类)

面试官贴心地给了我一些建议,让我在一些方面(比如 Netty 上挖深一点)。后来想想可能已经在发好人卡了

当然面试官还问了许多开放性题目,就不说了。大家从上面的面试知识点中也可以看出来,基础最重要(项目是用来加分的)。

阿里安排面试的速度相当的快,好评。

头一天投简历,第二天晚上就打来电话一面了,当时我还在唱k;

一面完了第二天二面。

================== 更新 ==================

500+收藏了,各位别这样啊?,这只是个总结,并不是什么面经。

既然大家这么有兴趣,我再多写点好了。

面试官提问的时候一般是按照“链式”提问的,一个问题后面可能跟着一连串更深层的问题,比如:

Q:Java 中线程的本质?

A:跟内核线程1:1,由操作系统调度,底层实现是 pthread。

Q:用户线程跟内核线程的区别是什么?

A:用户线程对 CPU 是透明的,不能被操作系统调度。

Q:并行与并发的区别是什么?(这个并不对的!只是我当时这么说!)

A:并行效率更高,在真正的多核机器上实现,

Q:现在流行的线程调度算法是什么?

A:时间片轮转法。

Q:可以在 Java 中设置线程的并发级别吗?

A:可以。

Q:这个并发级别可以对应到操作系统吗?

A:可以。

Q:如何把一个线程分配给指定的 CPU 呢?

A:不知道。

Q:这是一个开放性题,你再想想看?

A:(把其他 CPU 拔了)。

一个问题问完接着有下一个问题,最后可能会有开放性题,基本可以问到应试者不会为止。

所以大家准备知识的时候不要“浅尝辄止”,有些知识挖深一点可能更好。

================== 更新 ==================

晚上回来看看,已经800+收藏了。。。

评论中很多同学说难,应该是由我应试的岗位和面对的面试官决定的,不具备普适性。

这些知识点大多数都是很重要的,当然还有锁、集合、synchronized 等知识点面试官没问,我也很遗憾。面不过,主要问题还是在自己身上。

当然还有很多发散题,是用于考知识面的,是上面的知识点中没有的——比如面试官发现我做的B站爬虫的自动登录是需要输入验证码的,问我如何自动识别。。。如何自动识别。。。如何自动识别。。。我答的深度学习,举出 dl4j ,是没办法强答了,面试官说有图像识别算法。

================== 再更一次 ==================

大家的评论有些多,不能一一回复,我这里总的说一下吧,我是本科大三学生,实习应聘的是数据及产品部。

我的简历很平常,项目有用 netty 从零开始搭建服务器、普通 ssm 项目之类。

netty 百万级长连接是真的问了的,不过现在想想有很多方面是我当时没有答的,比如:

既然是长连接,如果场景像游戏那般,断线需要重登的话,那么不用自己维护一个 session map 了,可以用 Channel#attr()#set() 来实现类似功能;

静态资源可以提前用 unreleasable buffer(release() 方法永远返回 true,可以多次传输)准备好;

用 PooledByteBufAllocator ,netty 自己用 jemalloc 实现的的引用计数对象管理,不过这个是默认的,应该不算“优化”;

如果不对 io buffer 操作,优先考虑使用 direct buffer 等等等等。。。

我面试的时候居然都没想到,只答了 aio epoll 、少用状态 (Handler 可以 @Shared)、调整 bossGroup 和 workerGroup 还有业务线程池的线程数量(《并发编程实战》有公式可惜忘了)、调整这几种线程优先级。

其他同学写的阿里面经我也看了,异步与 Future (CompletableFuture)、 HashTable 与 ConcurrentHashMap 、volatile 与原子操作、JMM 、GC 为什么要分代、ArrayList 与 Vector 、synchronized 与 ReentrantLock ,然而我这边除了 HashMap 都没问到。

我是第一次被面试,也是第一次被拒,当然也不会是最后一次,下次面试的时候要尽量让面试官知道你会什么。

给面试官一点建议,一上来就问 netty 百万级长连接会“吓到我的” /(ㄒoㄒ)/~~。如果我问的话,会先问 eventloop handler 模型、request 与 channel 与 eventloop 的关系,接着问一下 ByteBuf 与 jdk ByteBuffer 的关系和区别,direct buffer 与 heap buffer 的优劣;也不要一开始就问 JVM GC 源码嘛,感觉自己学的那可怜的一丁点关于 GC 的知识直接被全盘否定,像面经那样问问为啥分代 gc 多友善。

================== 最后更一次 ==================

已经找到实习了哈,十分感谢推荐我的各位。

是啦是啦,我是本科大三,我的简历真的没写啥厉害的,别叫我大佬,担不起?。

评论和私信没想到这么多,这几天很少上知乎,不能一一回复,望谅解。

我对知识的爱好比较广泛,但没有在哪一方面挖得很深,是我的弱点,大家学习的时候可以“有偏向”地学。

ps. 没有找到实习的同学,请看评论区,应该能找到你想要的。


目录
相关文章
|
1月前
|
Python 开发工具
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
2024年Python最全使用Python实现音频双通道分离,2024年最新阿里p7面试难度
|
1月前
|
机器学习/深度学习 Python 算法
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
最新【Python 百练成钢】时间调整、二进制数、回文素数、字母距离(1),2024年最新2024年阿里Python岗面试必问
|
1月前
|
PHP Python
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
最新【Python】 实现循环最快的方式_python while循环加速,2024年最新阿里php面试题
|
1月前
|
算法 Java 应用服务中间件
阿里面试:说说自适应限流?
限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。 常见的限流策略有以下几种: 1. **令牌桶算法**:基于令牌桶的方式,限制每个单位时间内允许通过的请求量,请求量超出限制的将被拒绝或等待。 2. **漏桶算法**:基于漏桶的方式,限制系统处理请求的速率,请求速率过快时将被限制或拒绝。 3. **计数器算法**:通过计数器记录单位时间内的请求次数,并根据设定的阈值进行限制。 通过合理的限流策略,可以保护系统免受恶意攻击、突发流量和资源
33 4
阿里面试:说说自适应限流?
|
1月前
|
SQL 分布式计算 前端开发
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
2024年最全用python写一个自动生成春联的软件,打包exe,2024年最新阿里p8面试题和答案
|
29天前
|
设计模式 Oracle Java
阿里面试:NIO为什么会导致CPU100%?
在 Java 中总共有三种 IO 类型:BIO(Blocking I/O,阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)和 AIO(Asynchronous I/O,异步I/O),它们的区别如下: 1. 在 JDK 1.4 之前,只有 BIO 一种模式,其开发过程相对简单,新来一个连接就会创建一个新的线程处理,但随着请求并发度的提升,BIO 很快遇到了性能瓶颈。 2. 所以在 JDK 1.4 以后开始引入了 NIO 技术,NIO 可以在一个线程中处理多个 IO 操作,提高了资源的利用率和系统的吞吐量。 3. 而到了 JDK 1.7 发布了 AIO 模型,它可以实现当线
42 0
|
1月前
|
Python
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
|
4天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
4天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018
|
4天前
|
SQL 前端开发 Java
2019史上最全java面试题题库大全800题含答案(面试宝典)(4)
2019史上最全java面试题题库大全800题含答案(面试宝典)