土木工程转专业,上岸趣头条、今日头条后端开发,学习历程分享

学习群小伙伴的学习面试经历,在去年刚转专业开始学习的时候给到他路线和学习过程中的帮助,所以他在学习过程中基本没走弯路,执行力也很强。里面提到的很多学习上的点也是我在文章中一直反复强调的,其他同学可以借鉴下。

个人背景

大一大二都是土木工程专业,看了峰哥的转专业经历后,坚定了转专业的想法。于19年的9月转专业到计算机,开始自学编程。3月份先后拿了趣头条、今日头条的后端实习offer,目前已实习一个月。我尽量用简洁的语言说一些关键性的东西,希望对转行和对学习方向迷茫的小伙伴有一点帮助。

转专业的起因是土木发展前景比较差,又发现自己对编程很感兴趣,在mooc上学了下浙大的数据结构。因为成绩不错,大三开学正式转到计算机专业(其实当时转专业承受的压力还是蛮大的)。

大三上学期同时修大一大二大三上学期的计算机专业课,当时一直想的是想考浙大的研究生的,于是按部就班地去教室上课,但是学着学着我又开始质疑我学这些知识的意义,就像我当初质疑学土木工程的意义一样,还是准备找工作吧。

但是一学期有十多门计算机的课,课业负担还是比较重的,那段时间也还是很努力的,我学习一门课程的思路几乎都是:先搭好知识框架,把重要的知识点找出来并明白它们在整个课程脉络中的地位,然后考前疯狂刷题突击。用这种学习方法我在每门课上花的总时间都不长,以比较短时间学到了大部分核心知识,既以平均80分的成绩通过了期末考试,也在这期间也能腾出一些时间来自学一些我感兴趣(对面试有用的)的技术。

当然啦,很重要的前提就是要求你得有分清主次、规划自己的能力。1月10号放假后正式开始准备春季实习生招聘,从mooc网上找了些课程看,参考了峰哥提供的几个项目,网络 数据库 操作系统跟着面经贴着重学习了下高频考点,面试前一周刷了50道leetcode上的高频题目。

进入三月份开始投递简历,我投递的都是后端实习,第一个面试是趣头条,面完立刻发offer。

一二面各半个小时:

先问这个项目是怎么做的吧,说说NIO和BIO的区别吧,如果客户端突然断了服务器怎么检测,服务器怎么知道哪几个包是一个请求的。

又聊了聊我Spring Boot的项目。

数组和链表的区别,使用场景。

说说MySQL索引,出了一个建索引的题,给定查询需求,让你确定复合索引的各字段顺序。

你对redis了解多少

手撕一个最长上升子序列

select和epoll说说

浮点数为什么会有精度问题

数据库三范式

说说操作系统的文件系统

第二个面试的是阿里,一面挂。

20分钟挂。。。

数据结构自学过啊?说说常见的排序算法吧?巴拉巴拉,说说快排吧?

就是每一轮随机选一个随机数把它的放到正确的位置上...

为啥要随机?

如果不随机的话时间复杂度在原数组有序的情况下容易n方

 

图的相关算法学过吗?说说吧

常见的问题有最小生成树问题和最短路径算法,

说说最小生成树问题吧

prime和kruskal算法巴拉巴拉

 

String,StringBuffer,StringBuilder区别

 

说说ThreadLocal和它可能出现的问题

 

JVM了解吗,说说吧。

 

目前在学什么?

实话实说:在刷leetcode题

给你个反馈吧:觉得你很有冲劲,我看好你,但是还达不到阿里实习生的标准,这次不能给你过,但是会放在简历池子里。

好,谢谢您

第三个面字节跳动,从第一天技术三面,第二天hr面,第三天拿offer。

一面:

面试官:你数学好吗?我说还行吧,那我给你出一个偏数学一点儿的题:实现一个shuffle函数,就是给你一个数组你把它随机打乱顺序,要求完全随机。

我第一次说的是新开一个数组,每次随机从原数组中选择一个元素放入新开的数组中。面试官追问如果不能开辟额外空间呢?我说那就交换吧,遍历数组每个位置上的数组都和其后面随机一个数字做交换。面试官说你证明一下正确性,想了一会儿给出了证明。

二面:

LeetCode42接雨水:我知道比较优雅的做法是动态规划,奈何不会啊,最后面试官提示说也可以用单调栈解决,于是在面试官提示下手撕掉。

三面:

面试官一上来就笑呵呵的问我前两面感觉怎么样啊,我说发挥不太好但是面试官都给过了。他说那我们做一个算法题吧:抢过红包吧? 你设计一个函数,输入金额总数m和红包个数n,要求返回一个长度为n的数组代表n个红包,要求每个红包金额随机。注意红包最小单位是分。

我问了能用什么api吗,回答说给你一个random(n)函数可以1~n之间随机一个数,一共十分钟,现在还剩五分钟,写代码吧。我的思路是求出总金额sum用分做单位,然后随机生成n-1个sum以内的数,用bool marked[sum] 来标识,如果生成重复,则需要再次生成。最后遍历这个sum数组每两个marked=true的点之间的部分都是一个金额随机的红包。

 

三面面试官应该是部门领导了,问我最近半年在看什么书呀,我说我半年前才转到计算机系,现在在看Java并发编程的艺术。问我以后打算学点啥呀?我说Spring Cloud 和 Netty。

 

hr面:大学期间你最骄傲的事,为什么不考研,怎么看待加班,我说加就完了哈哈(不是原话哈),然后又说其实我们是弹性工作日的... 最快可以什么时候入职

第一天连续三个小时的技术面试,第二天半个小时的hr面,第三天发offer。三面都问了一些常规的基础知识,比如HashMap细节相关的,cookie和session,ThreadLocal是什么,使用会带来什么问题(不会),redis的相关读写策略(我也不是很清楚),NIO和BIO的概念区别(我做过一个Java NIO的项目),Spring IoC(做过Spring Boot的项目),TCP四次挥手,还有两位面试官都让手写了SQL(实在好久没有写了,基本的语法都忘了,尴尬)

心得:

①把深入了解过的知识点尽量在简历上着重描述下,我其实准备了不少 和 锁、线程池相关的内容,不过一点儿也没问。

② 一些东西不会很正常的,面试过程中不要有太大心理压力,面试官也不会太难为:比如我简单的SQL都不会写了,面试官说:没事看来你这块不熟,我说:确实,很久没练习了。

③但是代码题还是字节比较看重的,主要分别说说我遇到题目吧(每一面都有一个手撕代码题):

 

总结

1.做决定前深思熟虑,做决定时要果断和坚定。迷茫的时候可以请教他人,但需自己认清现状和自身情况。

2.时间和精力是很宝贵的,花点小钱学习一些优质的资源就是在走捷径(我用的比较多的是mooc网和极客时间)

3.学会抓大放小,分清主次。比如对于学校课程我只是考前突击,想让我平时去课堂里听课和完成作业是不可能的,相反我会在规划和探索适合自己的学习路线上花费很多时间。

4. 总是由学习收获/花费时间这个值的大小和变化,来驱动自己进行高效和有价值的学习的。 比如学技术或者做项目的时候不要太过沉迷细节,要带有比较强的目的性。我做一个项目是用到了微信支付相关内容,看了两个小时微信文档没耐心了,遂想:我花精力搞这干嘛,有意义吗,于是果断跳过这个章节继续学后面的模块。

--end--

推荐阅读:

五年Java外包转型大数据架构

北美零基础转行开发求职面经

双非硕士阿里大数据开发面经

一位材料专业研究生的Java转型复盘

从车辆工程到大数据开发,我经历了什么?

我,30岁,部队服役5年,零基础转大数据

Java干了半年,我机智地跳到了大数据开发日本留学生算法转型大数据开发?听他怎么说

传统金融IT男转型互联网大数据码农,图啥?

从安卓主管转型大数据开发,我经历了什么?

专升本程序媛,实习期间月薪10K,有点厉害

我是程序媛,从事大数据开发两年,我有话说

我,32岁零基础转大数据,不需要别人怎么看!

两年车间技术员转型大数据开发,说说转型这点事儿

3年Java开发转型大数据开发,如何跳出CRUD舒适区?

我是DBA,从大数据小白到阅读框架源码,薪资翻了三倍

双非菜鸡3个月收割头条大数据offer,方向真的比努力更重要!

国企车间流水线5年,重新考研,弯道超车,收割百度腾讯offer

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

被培训机构坑了,面国企要求唱歌...谈谈我转型大数据的心酸历程

警犬专业专科生,过阿里一面,又收作业帮offer,跟你聊聊大数据学习

学了三年的嵌入式,但我还是转型了大数据,跟你聊聊我学习的心路历程

扫描下方二维码

添加好友,备注【交流群

拉你到学习路线和资源丰富的交流群

你可能感兴趣的:(土木工程转专业,上岸趣头条、今日头条后端开发,学习历程分享)