电气自动化吃香吗?


        如果能转型的话还是尽早转, 刚好有位同学是双非二本大四学生, 工程及其自动化专业六非科班。他大二开始实习, 秋招拿了360 、海康威视Q等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这两学年,我分别拿了本专业的一等奖学金、二等奖学金、连续两年国家励志奖学金、三好学生、优秀学生干部,同时加入了党组织,这其中的艰辛其实可想而知。

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

        2019暑期,开始补计算机基础,liuyubobobo老师的玩转数据结构、算法与数据结构、深度实战玩转算法游戏、王道计算机网络、操作系统,买书看书,leetcode刷了几百道编程题,牛客剑指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分钟左右,尽量把自己的特长发挥出来。

        还有一个就是心态问题,我在秋招初期就差点心态崩了,因为一直不会面试,简历也写不好,面试总是挂,崩的差点都想去培训了,好在这个时候遇到了锋哥,是他阻止了我,让我静下心分析问题,解决问题。帮我改进了很多地方,也给我讲了很多面试技巧,然后从这之后基本是面一家拿一家offer。

        最后就是想转型要趁早,越早成本越低,庆幸自己能比较早的去参加比赛并且实习,自己去创造环境,也感谢一路上帮助我的朋友、老师,学习路上有人指导真的可以少走很多弯路,让自己不轻易放弃。



#学习路径#
全部评论
感谢楼主分享!!
点赞 回复 分享
发布于 2022-02-12 02:00

相关推荐

不愿透露姓名的神秘牛友
11-13 09:30
已编辑
美团 产品经理 n*15.5 硕士985
点赞 评论 收藏
分享
深信服科技 售前产品经理 17× 16 硕士211
点赞 评论 收藏
分享
11-09 14:30
蚌埠坦克学院
兄弟们,本人2本9硕卷绩点保研党,本科期间稍微看了些开发视频,感觉各种调库,各种api,不太喜欢,没有深入下去,去学ai方面的东西了。研二感觉科研做不出来可能只够毕业,然后算是从只有servlet的基础开始转java,现在跟着尚硅谷学了se,jdbc,ssm,web,juc,jvm,MySQL然后跟黑马学了redis,跟着敲了点评,但是印象也没多深。现在在学苍穹外卖。没有跟着敲,就拿完整版代码每次复制一部分到最初版项目然后运行这样学。有几个问题想求助大家,之前那些课是不是需要跟着敲代码和做笔记?我当时不懂,感觉技术栈太多,也不知道哪是重点,就没记笔记和跟着敲,想做项目的时候在敲。我感觉现在好多东西都忘记了,看javaguide才能稍微回忆点东西,尚硅谷好像笔记也不怎么全,然后讲源码的部分更是当时就不知道哪是哪,事后基本不记得多少。感觉基础不是很牢,不知道是不是要再学一遍,想问问大佬们怎么学的。然后外卖和点评感觉好像挺难的,虽然感觉外卖没解决什么困难的技术问题,应届生真的能达到这种项目水平吗?我感觉比深度学习难好多倍,至少深度学习项目文件挺少。现在力扣只刷过200,大多还是看题解抄的,现在在二刷hot100,做笔记记录做法想法,后续多自己写几次,能记住,本人可能真的是做题家,编程思维有点欠缺,本科代码码的不够多,只能记住简单的二分,快排,背包这些,递归对我来说看题解都不太能自己理解和写出来。看了牛客上各位的情况,感觉就业挺难的,不知道能不能进个国企,也不知道自己究竟能做啥工作,感觉自己还跟高中生似的没啥长进,不想啃老,现在空有时间,好像学习方法不太对,该怎么做呢
投递牛客等公司10个岗位
点赞 评论 收藏
分享
评论
4
8
分享
牛客网
牛客企业服务