学习群小伙伴的学习面试经历,在去年刚转专业开始学习的时候给到他路线和学习过程中的帮助,所以他在学习过程中基本没走弯路,执行力也很强。里面提到的很多学习上的点也是我在文章中一直反复强调的,其他同学可以借鉴下。
个人背景
大一大二都是土木工程专业,看了峰哥的转专业经历后,坚定了转专业的想法。于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,跟你聊聊大数据学习
学了三年的嵌入式,但我还是转型了大数据,跟你聊聊我学习的心路历程
扫描下方二维码
添加好友,备注【交流群】
拉你到学习路线和资源丰富的交流群