【还愿】阿里上岸了,附面经和Java非科班学习心得
贴主个人经历
本科双非化学,跨考了电子硕士。无互联网实习。20秋招拿了几个Offer,最后选择了阿里。
看到这个帖子的同学,还是建议有机会早点准备,尽量去实习,有实习经历会好很多。
贴主就是因为没有经验,跨专业过来也没有学长学姐指点,准备的有点晚,也没有实习吃了亏。不过20年疫情没有返校,可以在家全力准备,效率很高。
另外帖主新开了一个帖子,手把手教你非科班从0开始学Java,进大厂,求收藏求点赞:【校招干货】Java非科班自学指南网课版V1.0。
阿里上岸历程:
贴主一共投过三次阿里,春招实习一次,秋招两次。
- 春招实习阿里成都蚂蚁:当时跟着牛客大部队投了暑期实习,但其实不太懂暑期实习的意思,面试的时候面试官问我能实习到什么时候,我说随时能入职,能实习到7月多....然后就被挂了(当时不了解暑期实习都是冲着转正的,只是单纯想赚点生活费,攒个实习经历。因为女朋友在北京,所以只打算找北京的工作)。蚂蚁的面经之前有发过: 蚂蚁金服春招实习面经。
- 秋招阿里云内推: 秋招提前批阶段在牛客看到了阿里云网络团队的提前宣传,当时系统还没有开,就投了简历进行了提前面试,一面之后问面试官,说面试结果不错,让我准备二面。谁知道系统开了之后,简历推进系统被HR挂了简历。面试官说他们也没办法了,宣布阿里秋招结束。
- 面经:
- Java中集合都有哪些?
- 集合之间的区别,使用的数据结构的区别,应用场景?
- HashMap的结构与底层实现,是线程安全的么?如果需要线程安全怎么办?
- ConcurrentHashMap为什么可以线程安全?
- JVM内存区域,分代模型
- 项目相关,问到了Redis
- 问了Spring相关的问题,我有一个项目是手撕一个框架,当时打开电脑和面试官一起看的代码,面试官让我现场拓展功能。
- 写一个大题,给一定的字符串导出规则,然后给出导出后的字符换,要求复原字符串,给两个小时。
大概记得这些,时间太久记不住更多了
- 网申Java开发:本来都放弃阿里了,后来听说还有一次网申的机会,就去投了一下,没指望被捞,做了一次笔试只A了0.2。觉得彻底凉了,没想到半个月后被优酷捞了,当时觉得自己是KPI,没想到面到了最后。
- 面经(三面放在了一起):
- 计算机网络常规问题:HTTP/HTTPS/TCP/WebSocket协议,长连接短连接,拥塞控制机制,tcp为什么是可靠的等。
- 操作系统常规问题:线程与进程区别。线程调度机制,进程的状态,死锁的条件等
- 问了一大堆Linux使用的问题,好多都不会。
- JDK调优工具:jps, jstack, jmap啥的。
- JVM内存区域,分代模型,什么时候会发生OOM
- 类加载器,双亲委派模型,类加载机制
- GC垃圾回收算法,分代回收算法,四大引用类型
- MySQL语法,写了两个个SQL题目,如果一个表非常大,一个表很小,怎么优化查询效率
- 索引,索引的数据结构(抛开MySQL来说),Mysql中的索引,聚集索引和系数素银,最左匹配原则,如何调优SQL
- MySql中的锁分类,InnoDB和MyISAM的区别和分别适用的场景,事务的四大特性,四大隔离级别,怎么避免幻读?
- MySQL中的redo log和bin log。
- Redis是干什么用的?Redis如何实现分布式锁?Redis的持久化机制?Redis可能会出现的问题(雪崩、穿透等)。Redis的数据结构,跳表。
- 一致性哈希算法,用来干什么?
- 多线程是什么?为什么需要多线程?什么情况下需要多线程?
- 线程安全是什么?volatile了解么,干什么用的,原理是什么?synchronized呢?
- 线程池,线程池的参数,线程池提交一个任务后的的运行过程,什么时候会触发饱和策略?项目中用过线程池没有,怎么保证线程安全的?
- JUC包中的工具类,CAS机制
- 平时开发过程中怎么处理异常的?
- 项目相关问题,各种处理方式,解决方案。
- Spring常用的注解,你这个仿Spring框架的项目大概的一个逻辑是什么样的?Spring AOP应用场景,原理。
- 交叉面很少问技术问题了,一直在问项目相关,从背景到实施到落地。问个人经历,实习经历、比赛经历、学习经历、跨专业考研经历。
- 交叉面聊天过程说自己写过一个高并发缓存,详细问了一下实现。
- HR面只有9分钟,问个人的职业规划、为什么投阿里,现在哪家公司在沟通,会怎么选择,个人的最大优势和劣势。
大概就是这样,贴主没有录音的习惯,只能靠记忆来写了。
秋招经历
贴主大概从7月上旬开始投递简历,提前批基本投了一圈,全部凉凉。
提前批:
- 字节教育后端:笔试3.7/4,流程很快,一周连着三面,结果三面凉,说我没有实习经历,面经: 链字节跳动后端面经 。
- 京东提前批寻猎计划:流程很快,提前批免笔试,两周面完初试复试和HR面,进入无尽的等待过程,中途收到offer审批邮件,一个月后还是感谢信了。
- 百度提前批Java:官网被挂了简历,找了一个老哥组内直推的,二面凉了,写题优化没优化出来。
- 虾皮提前批:一面挂,当时作死反问环节问了疫情对虾皮有没有影响,东南亚疫情那么严重,虾皮会不会凉。。。
- 贝壳提前批:笔试2.8/4,挂
- 网易提前批:笔试挂
- 广联达:笔试挂
- 猿辅导:简历挂
- 快手:简历挂
正式批:
- 京东正式批:笔试1/2,两周面完初试复试HR面,已Offer,准备拒了。
- 滴滴:笔试2/2,二面挂。
- 转转:一天面完初试复试,第二周HR面,谈薪的时候拒了。
- 58集团:面试完之后泡池子没影了。
- 字节跳动:再次被捞,接了,9.28一面,后续拒了。
- 百度:拒了面试
- 腾讯:笔试完没后续
- 小米:笔试完没后续
非科班学习历程
非科班,学校也不教相关课程,只能自己去看网课,贴主自己的学习历程全部都是看网课,下面推荐的网课都是踩了很多坑才筛出来的,不推荐培训班的课程,怎么说呢,不是很喜欢那种风格,其实最喜欢的是浙大翁凯老师的公开课,真的看着很爽很舒服。
闲言少叙,直接上干货,所有推荐的课程都是官方链接,只是贴主个人的学习路线,大家可以自行判断合适与否(慕课网的课现在是没有那种推销返利的,贴主贴出来的链接都是官方直链接,大家可以放心点进去看。当时贴主其实也没钱买,很多都是看的盗版,大家有条件尽量支持正版,等贴主工作挣钱了会补票的)。
Java基础学习:筛选了很多网课,视频,最后发现了中国大学MOOC上,浙江大学翁凯老师的免费公开课,由浅入深,基础打牢:
零基础学Java
面向对象程序设计——Java语言。
课后作业一定要写!面试体系搭建:其实很多非科班的选手,不知道面向找工作该学什么,怎么去学,贴主也走了很多弯路,最后找到慕课网上一个很好的课程,带你把面试会问到的知识都讲了一遍,虽然讲的比较浅,但是可以让你搭建出一个面试的知识体系,然后在深入其中每个点去学习,很节省时间:剑指Java面试-Offer直通车。
个人项目:贴主自己搞了两个项目,一个是商铺系统,CRUD项目,展示自己的搬砖能力,一个是手撕Spring框架,展示自己的学习能力,和剑指Java面试一样。也都是翔仔的课程,这个老师真是个神仙老师:
- Java双版本(SSM到SpringBoot)校园商铺全栈开发:这个校园商铺的项目是翔仔第一个课程,说实话课程质量没有后续的好,课程中的代码可能有些地方有一点不连贯,但是整体还是可以做出来的。这个项目可以自己替换成任意的CRUD项目,比如牛客的那个论坛项目高薪求职项目课技术会更厉害点。
- 剑指Java自研框架,决胜Spring源码,造轮子的项目,如果用了,就要自己吃透里面的知识点,把Spring框架源码看熟悉。(不过根据个人面试经验,发现其实很少会问到这个项目,即使问到,问的也不深入,可能是因为面试官对Spring源码也不是特别熟悉,可以替换成RPC框架造轮子,更吃香)。
面试知识深入学习:在搭建完面试知识的体系后,我们需要针对每个点深入去学习,仅仅依靠《剑指Java面试》只能满足60%的面试需求,这部分就没有捷径可走了,只能自己去钻研,但是还是稍微有那么一些捷径的,下面给大家列一个速成书单:
- 趣谈网络协议:网易云首席架构师刘超写的,新用户好像十几块钱就能买,这里面介绍了计网的底层知识与协议,文章属于生动形象的那种,贴主也看过《计网自顶向下》,真的看不下去。这个专栏看完,应付面试中的计网是绝对没问题的,而且还能侃侃而谈,和面试官谈笑风生。
- 趣谈Linux操作系统:同样是刘超的书,新用户也是十几块钱,可以再注册一个号来买,哈哈,我就是这样干的。书名为趣谈操作系统,实际里面的内容很深很深,大量的源码分析,如果看不懂不要紧,哪里看得懂记哪里,看完会对操作系统有个大体上的了解,面试也能说个十之七八,完全够用。
- 豆瓣:现代操作系统:操作系统工具书,哪里不会看哪里。
- 豆瓣:深入理解计算机系统:计算机体系工具书,哪里不会看哪里。
- 豆瓣:深入理解Java虚拟机第3版:学习JVM的工具书,哪里不会看哪里。
数据结构与算法:随着CS内卷,数据结构和算法考察的越来越多,越来越难,这部分没有捷径,只能靠大量刷题训练,不过好的开始会让你事半功倍,下面分享下贴主的学习路线。
- 基础数据结构:对于非科班来说,从来没有学习过数据结构,一上来就刷题可能进度会很慢,建议大家先把数据结构学一遍,不过非科班只会Java,筛选了很多课程之后,发现了慕课网bobo老师的数据结构课程,全篇Java实现,比较适合只会Java的选手:
- 算法篇:学完数据结构,可能还是有点懵逼,十大排序算法,二分,递归、图、DFS、BFS在哪?这个时候有时间可以专门看一个算法的课程,没有时间可以边刷题边学。贴主当时看了小马老师的《恋上数据结构与算法》。
- 刷题篇:对于非科班选手,算法是绝对的弱项,首先建议先买一本豆瓣:《剑指Offer》,这本书虽然是C++的,但是里面的算法思想讲述的还是很清晰的。LeetCode上也有对应的专栏,里面的题目也是面试高频考察范围。
然后开始去LeetCode分类刷题,从数组开始刷,链表,树,二分,动态规划等,把每个分类的常考题,经典题刷熟练,能熟练掌握300题,总结考点,面试基本就够用了。
然后有时间还能再买一本左神的豆瓣:《程序员代码面试指南》,这个里面题量比较大,但是都是给出最优解的。
笔试篇:笔试永远是非科班的通,贴主的笔试水平也很差,主要现在的企业笔试比较喜欢考竞赛型的题目,对于ACMer来说很轻松,但是我们需要从题目中抽象出来考点,再去写,很多题是没有考点的,甚至是推理题,数学题,直接爆炸。这个贴主也没有特别好的办法,只能说多练吧。一定要把输入输出练好。可以看看牛客左神的算法笔面试精讲,讲的题目都是难度比较高的题,更适合笔试:牛客算法笔面试精讲。这个贴主自己买了,但是没有看完,哈哈,所以大家量力而行,买了不刷就是白买。
- 笔记篇:大家在学习的过程中一定!一定!一定要记笔记,并且整理笔记! 很多时候学了会忘的,整理笔记的过程是让你融会贯通,形成知识体系的过程。不需要被,多整理笔记,理解了自然就能记个差不多,面试之前看几遍笔记,知识就和长在脑海中一样。而且自己理解的知识很容易举一反三,现在面试很多面试官并不是直来直去问问题,而是给场景,或者绕着圈问,纯背的选手很吃亏的,下面推荐一些耳熟能详笔记或者论坛:
- LeetcodeTop:高频面试算法整理
- JavaGuide:Java面试指南
- CyC2018/CS-Notes:CS面试知识汇总
- 贴主自己的笔记博客,整理了一部分内容,还有好多没整理待填坑,大家挑着看吧。
——————————————————————————————————————
以上就是所有的分享了,贴主也是个菜鸡,有幸拿到阿里的offer,秋招可能就到这结束了,把还在流程中的公司面完为止。
祝大家都有满意的offer,生活愉快,顺利毕业!
#内推##春招##实习##阿里巴巴#