恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经,目前已更新至美团、字节…
作者@TechGuide【全网同名】
聊聊春招
春招来了,有些24届校招生可能还在做最后的努力,有些25届的小伙伴可能想要找到一个大厂实习给简历镀金。我知道,面对即将来的笔试面试,许多同学可能感到压力山大,焦虑不安。但是请记住,焦虑是一种正常的情绪,更是一种可以被转化为动力的能量。那么,如何化解焦虑呢?那就是,行动起来!
不想听声哥唠叨的可以直接跳到面试题目的部分~
-
首先,让我们正视焦虑,而不是回避。对于校招的不确定性,我们可以通过更积极的准备来缓解焦虑。笔试可以把历年考过的编程题认真刷一刷,根据TechGuide四年多做笔试题的经验来看,很多大厂的真题库是重复考察的,比如华为、美团这些…,所以只要力扣基本过关,加上往年真题的积极练习,通过笔试和面试的手撕算法问题不大,甚至能直接碰到笔试原题。切记,不是刷越多题越好,而是要注重理解算法思想和解题方法。逐步提升自己的解题速度,这将在笔试和面试中帮助你游刃有余。
-
其次,交流和合作也是减轻焦虑的有效途径。在这个过程中,和同学们多交流、相互学习,共同进步。可以参加牛客小圈子、大厂校招群等等,与他人分享学习心得、讨论技术问题,这样能够拓宽自己的视野,收获更多的知识。记住,团队合作是我们未来职场中必不可少的能力,而从现在开始培养这个能力将对你未来的职业生涯大有裨益。
-
此外,项目实践也是提高竞争力的关键。多参加一些实验室课题/实习,哪怕是自己做一些github开源的项目,将理论知识应用到实际中。这不仅能够提升你的编程能力,更能在面试中让你更有底气地回答问题。这是一种能够让你对计算机专业有更深刻理解的方式,同时也会让你在面试中更具自信。
-
最重要的是,别忘了保持良好的心态。焦虑是人生旅途中的一部分,但它不应该成为我们前行的绊脚石。记住,每一次笔试面试的挫折和失败都是成长的过程,通过好好滴复盘,它们会让我们更加坚韧,更加勇敢。在面对校招的压力时,保持积极的心态,相信自己,你一定能够迎接所有的挑战,拿到满意的offer!
下面看下阿里云的三轮面经,好好地复盘模拟下吧~
基本情况
投递岗位:后端开发
投递部门:阿里云
招聘类型:暑期实习
Base地点:杭州
问题记录
一面(60 min)
电话面。一开始知道是电话面试,本来以为不需要写算法题的,谁知道最后感觉快结束的时候发了个链接过来让打开写Orz,所以一定要做足准备,不要心存侥幸哎。
- 自我介绍
- 项目简单介绍。大概说下做了哪些项目,项目的需求是什么,大概用到了哪些技术栈;
- Java相关:String为什么是不可变的?Java相关:String、StringBuffer和StringBuilder的区别?
- Java相关:在循环内使用“+”进行字符串拼接的话会有什么问题?
- JVM相关:堆空间的结构?分配策略有哪些?
- JVM相关:Minor GC和Full GC的区别?
- Linux相关:文件的概念?(可能是想让我指出Linux中所有内容都是以文件的形式保存和管理)
- Linux相关:文件有哪些类型?各自的作用是什么?
- Linux相关:inode的作用?inode包含哪些内容?给出一个文件名,Linux是如何根据该文件名打开文件的?(文件名->inode->block)文的访问时间是如何记录的?
- Linux相关:零拷贝是什么?用来解决什么问题?有哪些应用场景?实现方式有哪些?
- Linux相关:压缩和解压使用的命令?相关参数的作用?
- 网络相关:TCP 和 UDP 可以使用同一个端口吗?
- 网络相关:三次握手与四次挥手流程?TIME_WAIT出现在什么时候?要等待多久?(2MSL)为什么要等待这么久?
- 算法题:Leetcode15 三数之和
二面(75 min)
- 自我介绍;
- 项目介绍:参与了哪些项目,自己挑一个项目详细展开,介绍项目的创新点和难点,针对其中存在的问题有没有一些思考;
- 实习经历介绍:介绍下完成了哪些需求,业务流程,完成需求过程中遇到了哪些问题,如何解决的;
- Mysql相关:MyISAM和InnoDB的区别?(行级锁、事务、外键、崩溃后的安全恢复、MVCC、性能等)
- Mysql相关:索引的底层数据结构?为什么选择这样的结构?(B+树)
- Mysql相关:自己选择维度划分介绍有哪些索引类型?(按照底层存储方式角度划分:聚簇索引和非聚簇索引)
- Mysql相关:最左前缀匹配原则是什么?自己举例进行说明;
- Mysql相关:索引下推是什么?(在遍历过程中,对联合索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数)
- Mysql相关:事务隔离级别?InnoDB引擎的默认隔离级别?InnoDB引擎如何解决幻读?(读未提交、读已提交、可重复读、串行化)
- Mysql相关:你在项目中使用了哪些方式来对数据库查询进行优化?
- Spring相关:介绍下IoC和AOP?在项目中哪些地方有使用?(Mybatis)
- Spring相关:介绍下项目中和数据库有关的操作?在Spring中连接数据库进行数据插入操作时有哪些需要注意的地方?
- Spring中事务传播行为有哪些?你在项目中基于什么考虑使用的?(TransactionDefinition.PROPAGATION_REQUIRED、TransactionDefinition.PROPAGATION_REQUIRES_NEW、TransactionDefinition.PROPAGATION_NESTED);
- Spring相关:bean的生命周期?有哪些注入方式?(构造器、setter和属性注入)
- Spring相关:线程池有哪些核心参数?各自的作用?项目中如何使用的?(核心三参数:corePoolSize、maximumPoolSize和workQueue)
- 并发相关:进程、线程和协程的区别和作用?
- 并发相关:volatile关键字的作用?在保证线程安全的情况下实现单例对象的获取?(双重校验锁)
- 并发相关:synchronized关键字的作用?底层实现原理?和ReentrantLock的区别?锁升级及实现原理?(偏向锁->轻量级锁->重量级锁)
- Redis相关:有哪些持久化方式?AOF和RDB的底层实现原理?在项目中用的是哪种?基于什么考虑使用的?
- Redis相关:引入哨兵集之后,主从故障的转移过程?
- Redis相关:Redis是单线程吗?采用单线程为什么速度快?
- Redis相关:Redis阻塞的原因有哪些?出现阻塞后的排查以及解决方式?
- 算法题:Leetcode53 最大子数组和;
- 算法题:Leetcode146 LRU缓存。
二面开始针对项目和实习经历的追问开始变得多了起来,而且会在听你介绍的时候针对其中的一些点展开追问,这个过程中会涉及到八股文的提问。所以,在准备项目的过程中,一定要好好想想项目用到了哪些技术,相关的知识点最好都多看看,这些在面试中都是极有可能会问到的。二面开始,面试官会更加看重你在做项目过程中的一些思考,比如遇到问题的解决方式和一些反思总结。因此,除了八股文外,还应该多思考下自己项目的亮点,最好有一些别人没有的创新点,这样会很有优势。在介绍项目的时候也可以简单说说你通过项目学到了什么,有哪些总结思考,以此来展示自己的学习能力。
PS:本来是给的一道算法题,估计看我写的很快,问我是不是做过,回答是之后又给了一道Orz。也许做题速度也需要稍微控制控制hhhhh。
三面(50 min)
- 自我介绍;
- 项目相关:面试官挑了其中一个项目让介绍,主要是问了项目的技术栈、实现效果和创新点;
- 实习经历相关:概述一下完成了哪些具体需求,以及这些需求所涉及的业务流程。在实现这些需求的过程中,遇到了哪些挑战和困难?又是如何有效地解决这些问题的?具体的解决方案和应对策略。
- 场景题:不考虑系统限制,如何快速在大量字符串中统计出现次数前10的字符串?如果考虑内存限制,应该采取什么措施在海量数据中进行统计?
- 场景题:设计实现一个高可用、高并发的系统,讲讲有哪些需要注意的地方?对于突发的大流量有哪些处理方法?热点数据有哪些处理方法?
- Redis:刚刚场景题中用到了redis,为什么redis是单线程但速度依旧很快?
- 操作系统:介绍下IO多路复用?select、poll和epoll各自的区别?
- 操作系统:磁盘快照有了解吗?介绍下COW和ROW?
- 操作系统:进程、线程和协程各自的作用和区别?进程和线程的组成?
- 操作系统:CPU数量为1的进程执行死循环会发生什么?如何解决?
- 计算机网络:有哪些网络攻击方式?在项目中针对可能的网络攻击采取了哪些相应的防范措施?
- 计算机网络:cookie、session和token的区别?各自的使用场景?
- 数据库:项目中使用了NoSQL和MySQL,说说NoSQL和关系数据库的区别?
- 其他:最近在看什么书?有哪些收获?
- 其他:大学以来最有成就感的一件事?
- 其他:有多家公司的offer根据什么标准进行选择权衡?
三面没有算法题,相比一面二面主要增加了场景题的询问。在整个面试过程中,感觉面试官比较看重个人的思考,比如场景题中你说了一种设计思路,面试官会问你觉得目前的设计还有没有可以提升的地方,这种时候即使回答的不是标准答案,面试官也很高兴地会和你进行探讨。此外,一些其他问题也会在三面和后续的hr面多起来,这些也可以稍微准备准备。