数智资源网
首页 首页 大数据 查看内容

今日头条后端开发的学习历程分享

木马童年 2020-10-14 12:35 23 0

这次带来的是一位小伙伴的学习面试经历,这位同学的学习思路正确,执行力也很强。其他同学可以借鉴一下。 个人背景 大一大二都是土木工程专业,看了很多前辈的转专业经历后,坚定了自己转专业的想法。于19年的9 ...

这次带来的是一位小伙伴的学习面试经历,这位同学的学习思路正确,执行力也很强。其他同学可以借鉴一下。

个人背景

大一大二都是土木工程专业,看了很多前辈的转专业经历后,坚定了自己转专业的想法。于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. 总是由学习收获/花费时间这个值的大小和变化,来驱动自己进行高效和有价值的学习的。 比如学技术或者做项目的时候不要太过沉迷细节,要带有比较强的目的性。我做一个项目是用到了微信支付相关内容,看了两个小时微信文档没耐心了,遂想:我花精力搞这干嘛,有意义吗,于是果断跳过这个章节继续学后面的模块。

免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!

计算机 数据结构 学习方法 数据库 操作系统 阿里
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...