今天分享的是学习群的一个研二女生,她在国企电网工作两年后读研,随后零基础开始接触开发的学习,在春季实习的时候拿了一些大厂的大数据开发offer。
自我介绍
我原来是电气专业的,工作了两年,转的软件工程,读了硕士,一开始还挺难的,学习基础知识,认识一个全新的领域。我从19年年底开始接触开发,真正的零基础开始学习,后面运气也比较好,算法没刷几题就开始面试,6月份陆续拿了美团、阿里、华为的大数据offer,也有几家中小厂的。其中阿里面了两个部门,总计8面;美团4面,华为3面,流程都非常久,我一度都认为没戏了。。
方向选择
在找实习中,最困扰我的应该是选择哪个方向。一开始我在实验室的项目做的是前端开发,到后来觉得,前端变化太快,就转做后端开发,是选择用python还是用java,也是纠结,后来发现后端的竞争真的太大了,扎实的编程基础,项目经验,框架学习,还有一群大佬,所以也就作罢了。因为看了峰哥的几篇文章,随即接触了大数据,在懵懵懂懂中走入了这一行。
学习过程
因为我之前没有接触过编程(研究生复试的时候大概知道一些,但是几乎等于0),所以我的学习是从Java的学习开始的。其实我是很纠结的,应该直接练算法题还是看基础知识来学习Java?最后,我还是决定先看知识点,学习的深入程度大概就是可以知道基本的概念,基本的数据类型就差不多了。
理论学习
我这个时候就开始刷剑指offer,同时我在极客时间上买了一个数据结构和算法的课,这样大概持续了一段时间。之后我就开始看深入理解JVM这本书,同时结合峰哥给我的面经,开始看Java面试的知识点。讲道理,这个阶段是很痛苦的,这个时候大概应该是去年11月份吧,马上又要期末考了,所以时间很紧。
同时,面试点通常是一个很深的点,会牵扯到很多的知识,所以这个阶段真的是很漫长。那时候我是没有大数据的项目的,本来打算做峰哥的项目,但是,我后来还是觉得太抽象了,加之我大数据的知识一个都还没开始学,所以也就作罢了。期末考试结束,已经是年后了,学习好像到了平台期。
实践学习
我真正开始大数据知识点,应该是2月份以后了吧,那时候面临着找实习的问题。心情也在摇摆,还是在纠结要往什么方向找实习,加上过年,疫情,这个人都是处于不想学习的状态,但是,实习迫在眉睫啊,所以我又开始逼自己学习了。好几次坚持不下去,就去找峰哥稳定军心,峰哥跟我说我是科班的,只要学坚持学,问题不大的。
想着还是干不过后端大佬,我就又捡回了大数据的方向,开始大数据知识点的学习。我从Hadoop开始,把HDFS,Yarn,MapReduce的知识框架全部都看下来,然后自己在虚拟机上搭建了环境,试着简单的做一些基本的操作,在这个期间,我还学习了Java并发编程,主要是看B站(大型学习网站)的一个视频,还挺多的,快200集被我啃下来。这两部分的学习是同步进行的。我个人是比较习惯做笔记,这样可以回头看,但是也比较耗时。
项目学习
但是,有一个致命的问题,我还没有项目啊,这个时候,简直就是老天爷帮我,我们人工智能课上有一个人工智能的项目,然后我就花了一个星期,把这个项目的脚本啃下来,同时套入大数据技术栈和场景,然后转换成了自己的项目。
因为我之前不是软件专业,所以我的sql真的不是一般的差,所以我啃脚本的同时,我开始学习Hive的基础知识和语法,也是在B站上看的一个视频。为了丰富简历,我还看了峰哥的ZK视频,B站的ZK视频,还有一个博主关于ZK面经的分享。这个时候,差不多就是3月中旬了吧。这时候,我开始投简历了。
说实话,在投简历的时候,我真的是一个超级菜鸡,目前简历上写的是熟悉Java(基础,JVM,并发编程),了解Hadoop,Hive,Zookeeper,了解Linux(我的研究生课程选修课),了解MySQL(被逼无奈),了解数据结构和算法(一直在练算法),项目经验是实验室的一个网站,做的前端;人工智能课的一个项目,背的脚本。
开始面试
好,然后就开始投简历了。没想到第一个面试就是阿里巴巴,周一晚上要笔试,周一上午就有人约晚上面试。What???小朋友有很多问号??然后我做了笔试之后,直接开始面试了,那天下午我开始疯狂刷知识点。不出意外,我算法一道都没有ac,但是面试还挺顺利的,大概40分钟吧,问的比较基础,很快就约2面,然后3面,4面,hr面。3面的算法加试,面了两个半小时,可太难了吧。反正最后阿里巴巴也没有给我发offer,把我放在池子里泡着。
但是面阿里巴巴的那一个半星期,我一下子就成长起来,对面试的流程有了大概的了解,也大概知道流程什么,果然还是要面试起来,才会无所畏惧啊。之后投了美团,华为,拼多多,字节跳动,腾讯,招行,微众,网易…,字节跳动简历就被pass了,腾讯一面挂了,好像不亲Java,网易二面挂,果然写sql还是我的硬伤,美团约了下个星期2面,华为下个星期2面,招行笔试挂,微众笔试挂,拼多多性格测试之后就没消息了,反正就是,一直没有offer啦。
后来一个大数据公司在找数据挖掘的岗位,我就想说不然试试吧。然后我花了一个星期开始啃算法。啊,算法真的是太痛苦了,什么线性回归,逻辑回顾,决策树…,反正我就看着周志华的机器学习,然后看了B站一个视频。然后硬着头皮去面试了,谁可知,我最后拿到offer了。人生真的是很奇妙呢。不过要做人工智能的项目,还是离不开写脚本和算法,所以最近就是慢慢开始补算法,python,Hql,然后还要开始准备秋招。
收获offer
到5月份,阿里另外一个部门又把我捞起来鞭打,到6月初已经面了3个技术面,1个HR面,但消息又沉了两个星期。在这两星期我通过美团的4面,也给我发了offer,于是我就接了。华为面了3面也没消息。在我接了美团几天后,阿里HR给我发了offer,随机华为也给我发了。啊,人生真奇妙,那时也没多开心,有点麻木了。
部分面试题
阿里一面(35min)
hadoop的基本组件详细介绍一下
zk的实现原理
zk如何实现分布式锁
并发编程如何实现
生产者,消费者模式的具体实现是什么
mysql的事务隔离级别是什么
红黑树知道吗?大概说一下
阿里二面(30min)
项目
hive的优点,为什么要使用hive
**tcp协议的重传机制**
问了转行的原因
阿里三面(两个半小时)
算法题一,在数组中随机选取是三个数,越大的数出现的频率越大
算法题二,根据字典来遍历输入字符串
算法题三,岛屿问题
**T的含义是什么**
项目介绍一下
数据流中的中位数是怎么找到的
阿里四面(30min)
自我介绍
项目的介绍
问了一下复杂链表的复制
聊了一下疫情的问题
hr面
项目遇到最大的困难
你最有压力的时候,怎么缓解
你最优成就感的项目
你为跨专业考研
你未来的职业规划
面试这么多次的收获是什么
你笔试题做下来是什么感觉,有没有对答案
你了不了解阿里云的产品
腾讯面试
项目
网站输入url的过程
dns协议是否使用udp
三次握手和四次挥手
为什么建立连接时三次握手,断开连接时四次挥手
tcp有什么别的保证可靠性的机制嘛
tcp出现包丢失要怎么处理呢?
滑动窗口啥的?我不知道啊
你说一说如果我要找出数组中重复的数字要怎么做呢?
hashmap
位图(不知道面试官提到的)
那你说一说hashmap中怎么解决冲突呢?
那你说一下怎么找到数组中的最大的k个值呢?
使用小根堆
还有别的方法吗
使用快速排序的思想,时间复杂度是多少
看你会使用linux,说一说怎么查看内存,怎么查看磁盘空间,怎么查看进程
你会c/c嘛?