二本电气工程应届生收割5个offer,转型大数据真的与专业无关

双非二本大四学生,电气工程及其自动化专业,非科班。大二开始实习,秋招拿了360、海康威视等5家offer,其中三家大数据,两家Java开发。

学习与面试历程

2017年底,在朋友的帮助下,开始接触编程学习,也是他帮我选择了Java这个方向,其实在学习之初能有个人指点下方向其实是件很重要的事。首先是慕课上看了一个讲Java基础的课程,后来朋友给我分享的某机构Java培训视频。

这个过程挺曲折的,一方面面临本专业期末考试,另一方面自学编程确实是件挺艰难的事情,这个感觉在刚接触Web开发,页面调Bug的时候体会的更深刻。

2018上半年,主要是在一边学习本专业课程,一边自学Java,我开始体会到,学习这些东西应该去打一些比赛练练手,为此我还特意找了辅导员,导员估计也是一脸懵逼,毕竟我们专业是学电气的,用Java的很少,他建议我去学校官网留意一些比赛通知,自己找队友组队参加。

于是开始了招募队友之路,基本问遍了我们专业有哪些人在学编程,后来找到了个会php的哥们,我和一个软工专业的同学搞网页开发,这个哥们就做后台,参加了一个校级的比赛,拿了三等奖。后来就开始了web开发的学习,SSM,SSH,Dubbo、Mysql、Redis、SpringBoot、SpringClound电商项目,SpringBoot和Cloud是看寥雪峰老师的课。

2018暑假,在认识的一个老师合伙的小公司里实习做了个SSM的商业项目,开始在实践过程中,疯狂锻炼开发调试能力。这期间对调BUG的能力有了很大的提升,如果不考虑分布式高并发高可用这一块,这个时候已经有能力独立开发一个web项目了。

2018下半年,开始了大数据开发学习,同样也是看的黑马大数据,这期间,还参加了两个省级比赛、一个国家级比赛。更重要的是,2017-2019这两学年,我分别拿了本专业的一等奖学金、二等奖学金、连续两年国家励志奖学金、三好学生、优秀学生干部,同时加入了党组织,这其中的艰辛其实可想而知。

2019上半年,看深入理解Java虚拟机这本书,学完了Linux、Zookeeper、Hadoop,MapReduce、Kafka、Storm、Hbase、Hive、Netty,Scala、看Spark源码,学习做了几个大数据项目。

春招找实习的时候,投了五六家,三四家挂在了笔试上,由于我前期的学习上并没有去学习计算机网络、数据结构、算法等计算机基础课程,这次实习拿到学校本地一家公司和海康威视的Java开发实习生Offer。最后还是放弃了这两个机会,暑假全身心留在学习计算机基础以及大数据开发学习上。

2019暑期,开始补计算机基础,liuyubobobo老师的玩转数据结构、算法与数据结构、深度实战玩转算法游戏、王道计算机网络、操作系统,买书看书,leetcode刷了几百道编程题,牛客剑指Offer等。

2019秋招的时候,刚开始的几个面试都挂了,问的问题我好像都会但都答不上来,很慌,生怕浪费面试机会。后面朋友给我推了一位老师的微信,老师给跟我聊了一会,指出我存在的几个问题:想系统学习大数据的话,可以加入大数据技术学习扣扣君羊:522189307

1..心态不好,秋招才刚开始就觉得自己不行。

2.简历结构写的不好,项目过于简单。

3.知识体系很零散,不系统化。

后面按老师的指导的路线走,基本就是面一家过一家,先后拿了海康威视(大数据)、大华(大数据)、奇安信(原360企业安全)(大数据)、两家小企业Offer(Java)。

深演智能大数据开发经历了两轮技术面,一轮HR面,又加面了一轮CTO面,最后还是没有给Offer,估计他们CTO需要能力更强的人。58大数据开发两轮技术面,聊的其实挺愉快的,二面面试官还答应我是过了二面的,不过没后续了。

还有些其它小厂经历了至少两轮面的。拿了几个offer后也不想投了,就签约打游戏去了,学了那么多不就为放松这一刻吗。。最后选择了奇安信(奇安信听说不加班,实习发现确实如此)。

实习经历

2019年12月到奇安信实习,来的时候组里在对大数据各个组件做一个监控告警平台,我到的时候监控差不多做了30%,用的开源软件是之前没有学习过的,很快熟悉了软件,接下来的所有监控以及告警这块全部是我负责了,告警这块用的开源项目是我自己调研的,然后自己修改组件源码、写python脚本等来满足我们的需求。

平台80%的线上组件的告警用的都是我修改后的项目来做的,组里是做分布式存储的,纯搞技术,做底层源码的修改,也为社区提供一些支持,后面我主要的工作和Kafka有关。这跟我一开始学习偏应用开发不一样,不过好在之前做过不少项目,锻炼了开发调试能力,基本工作进行的都很顺利。

秋招面试题

接下来贴一下秋招面试题,都是我遇到的实战题,有Java,有大数据:

1.死锁、乐观锁、悲观锁、synchronized底层原理及膨胀机制ReetrantLock底层原理、源码是如何实现公平和非公平的synchronized和lock的区别volitale理解?

2.volitale保证可见性的意义什么是指令重排序,为什么要禁止指令重排序介绍java中的基本数据类型及所占大小2的8次方是多少,Integer最小值是多少。

3.说数值scala中Int和Long是怎么实现的,丰富的API是如何实现,scala中String是怎么实现的,这么多丰富的方法是怎么实现的?

4.隐式转换介绍Java中你知道的所有Map、Set、List的类,比较他们的区别,哪些是线程安全?怎样使用线程安全的集合,并发安全的容器都有哪些?HashMap和ConcurrentHashMap的原理HashMap的key如何设计?HashMap死循环问题HashMap为什么使用红黑树不使用B树、B+树说一下平衡二叉树的插入删除操作?树的层序遍历说说?多进程和多线程的区别,进程和线程的区别?

5.Callable和Runnable的区别谈一谈?线程怎么实现?讲讲Java中的线程池?自定义线程池,你是如何考量七大参数的,设计思路?如何优化synchronized,CAS的缺点

6.countdownlatch、cyclicbarrier和semaphore谈一谈,说说你是怎么用的Kafka存储机制,Kafka选型,ISR机制,Kafka集群数量是怎么考量的?

7.有一个共享变量,现在多线程操作,如何设计保证线程安全,并优化

8.JVM分哪几个模块?JVM垃圾回收算法?挑一个垃圾回收算法讲一讲原理?挑一个垃圾回收器讲讲?

9.说说类加载和双亲委派机制?介绍JVM内存模型,我创建了一个对象,它有一个变量,这个变量在JVM哪里,是线程安全的吗?

10.springMVC流程说说?spring的IOC和AOP?AOP项目中使用过吗?IO和NIO的区别?

11.netty看过源码吗?你写netty rpc的时候网络传输是怎么做的?使用netty比nio有什么好处?

12.spark看过哪些源码?spark算子有哪些?哪些会导致shuffle,action和transformation算子?stage如何划分,task怎么分配?spark缓存不够用了怎么办?spark和kafka的选型问题?

13.storm的ACK机制?你做的storm项目,topology如何设计的?

14.springboot了解吗?微服务知道吗?double源码看过吗?springmvc和springboot区别?hibernate和mybatis区别?

15.你的大数据项目,怎么保证最后结果的正确性?

16.spark任务提交流程,面试官提示了applicationmaster,需要说yarn cluster模式下的流程?spark堆外内存?sparkshuffle中的瓶颈?说下spark的hashshuffle和sortshuffle,现在使用哪个?

17.mysql和redis的区别?redis缓存雪崩?mysql表和视图的区别?mysql的四大事务?关系型数据库和非关系型数据库的区别?

18.TCP/IP网络体系结构说下?ICMP是哪一层的协议?Linux有哪些常用命令?

19JVM调优做过吗?说说看?介绍一个调优的案例说下?JVM性能监控工具有哪些?分别是做什么用的?JVM调优和性能监控工具基本是必问的,建议搞一个案例总结一下

20.排序算法也很重要,面试官让介绍常用排序算法,时间复杂度,稳定性,升序排序用小顶堆还是大顶堆之类;10亿整数找出现次数最多的topN,单机内存不足;反转链表,链表入口,数组之类的编程题也有;

能回忆起来的差不多就这些了,还有一些项目有关的就不说了。

经验总结

校招找大数据开发,其实很多公司对大数据组件问的相对比较少,更多重视的是Java基础,计算机基础,所以这一块一定要过关,我就看到过有人没有学过大数据任何一个组件,但是人Java、多线程、计算机基础超级好一样拿到大数据开发Offer的,但是建议有时间还是要学一些大数据的组件再投这个岗位,然后准备面试的时候,往自己学过的地方谈,学会引导面试官很重要,毕竟面试大部分就30分钟左右,尽量把自己的特长发挥出来。

境,也感谢一路上帮助我的朋友、老师,学习路上有人指导真的可以少走很多弯路,让自己不轻易放弃。

发布了187 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/mnbvxiaoxin/article/details/104930030