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

简介: 面试职位: 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. 没有找到实习的同学,请看评论区,应该能找到你想要的。


目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
19天前
|
存储 NoSQL 架构师
阿里面试:聊聊 CAP 定理?哪些中间件是AP?为什么?
本文深入探讨了分布式系统中的“不可能三角”——CAP定理,即一致性(C)、可用性(A)和分区容错性(P)三者无法兼得。通过实例分析了不同场景下如何权衡CAP,并介绍了几种典型分布式中间件的CAP策略,强调了理解CAP定理对于架构设计的重要性。
50 4
|
1月前
|
存储 NoSQL 算法
阿里面试:亿级 redis 排行榜,如何设计?
本文由40岁老架构师尼恩撰写,针对近期读者在一线互联网企业面试中遇到的高频面试题进行系统化梳理,如使用ZSET排序统计、亿级用户排行榜设计等。文章详细介绍了Redis的四大统计(基数统计、二值统计、排序统计、聚合统计)原理和应用场景,重点讲解了Redis有序集合(Sorted Set)的使用方法和命令,以及如何设计社交点赞系统和游戏玩家排行榜。此外,还探讨了超高并发下Redis热key分治原理、亿级用户排行榜的范围分片设计、Redis Cluster集群持久化方式等内容。文章最后提供了大量面试真题和解决方案,帮助读者提升技术实力,顺利通过面试。
|
1月前
|
SQL 关系型数据库 MySQL
阿里面试:1000万级大表, 如何 加索引?
45岁老架构师尼恩在其读者交流群中分享了如何在生产环境中给大表加索引的方法。文章详细介绍了两种索引构建方式:在线模式(Online DDL)和离线模式(Offline DDL),并深入探讨了 MySQL 5.6.7 之前的“影子策略”和 pt-online-schema-change 方案,以及 MySQL 5.6.7 之后的内部 Online DDL 特性。通过这些方法,可以有效地减少 DDL 操作对业务的影响,确保数据的一致性和完整性。尼恩还提供了大量面试题和解决方案,帮助读者在面试中充分展示技术实力。
|
2月前
|
消息中间件 架构师 Java
阿里面试:秒杀的分布式事务, 是如何设计的?
在40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试阿里、滴滴、极兔等一线互联网企业时,遇到了许多关于分布式事务的重要面试题。为了帮助大家更好地应对这些面试题,尼恩进行了系统化的梳理,详细介绍了Seata和RocketMQ事务消息的结合,以及如何实现强弱结合型事务。文章还提供了分布式事务的标准面试答案,并推荐了《尼恩Java面试宝典PDF》等资源,帮助大家在面试中脱颖而出。
|
2月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
|
2月前
|
Kubernetes 架构师 算法
阿里面试:全国14亿人,统计出重名最多的前100个姓名
文章介绍了如何解决“从全国14亿人的数据中统计出重名人数最多的前100位姓名”的面试题,详细分析了多种数据结构的优缺点,最终推荐使用前缀树(Trie)+小顶堆的组合。文章还提供了具体的Java代码实现,并讨论了在内存受限情况下的解决方案,强调了TOP N问题的典型解题思路。最后,鼓励读者通过系统化学习《尼恩Java面试宝典》提升面试技巧。
阿里面试:全国14亿人,统计出重名最多的前100个姓名
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?

热门文章

最新文章