本博客其他文章(学习笔记)导航

一、前言

1.1 自我介绍

大家好,我是CandyDing,985机械硕士转码( 后端开发 ),22届校招拿到快手、度小满、新浪、东方财富、用友的offer,喜欢Java、Python、算法,前端JS、VUE也能玩,转码一路不易,总是被身边的琐事烦扰,曾受尽冷眼和嘲讽,也曾被面试和算法折磨到头痛欲裂,历经磨难两载,终于涅槃上岸,经常有机械的师弟向我请教学习路线,因此在这里分享一下自己的学习心得、面试经验、学习笔记,希望能帮助到有缘人吧。

1.2 转码原因

转码的原因大概有两点:

1 机械行业的薪资水平不高,而且研究所以及一些好的单位比较看重第一学历,专业对口的公司都是些重工类企业,加班不比互联网少多少,互联网加班996经常上微博头条,熟不知很多传统行业加班也是996,猝死的也是不少只是没爆出来罢了,当前中国这种环境就是这样,没办法。所以与机械相比,我更喜欢 早上10走进市中心公司大楼,端一杯咖啡,打开电脑写自己的代码这种都市生活。

2 对机械行业不感兴趣,不是我没好好学本专业,在本专业我也拿过国家励志奖学金,本科阶段也曾是年级头部,但是学的越好也会发现该专业所学的东西并不是我所喜欢的,我想象中的机械专业应该是造智能机器人、飞机、火箭等,大家毕了业应该能设计一些智能小车、智能机器人之类,但是当我学到大四我才发现,这个专业都是在搞一些制造相关的东西(也可能我是传统方向),大家都研究零件怎么加工,机床怎么设计,以及某个结构怎么设计,都是一些静态的,距离我想象中的“智能”还差的很远,并且做出来的东西比较虚,就比如我们课设做的减速器只能停留在我的电脑上以及图纸上,无法变成一个实际存在的东西(加工起来也是需要花费很多钱的),并且这些东西做出来也离我的生活很远,反观计算机这边就不一样了,大家搞人工智能、人脸识别、路径规划、NLP以及推荐算法,甚至可以自己写游戏,工具以及网站,这些都是实实在在能用到的并且能影响我们的生活的,实践和学习成本比较低,一台电脑足以,这是我转码的第二个原因。

于是基于以上两个原因,在我研究生未入学阶段就下定决心要转码了,转码的心酸历程请接着往下看。

二、学习路线

2.1 转码历程(踩坑历程)

2.1.1 未入学阶段

还没入学的时候,我对IT行业还没有个大致的认识,只知道是写代码的,听说学C以后学其他语言比较容易,于是买来了一本谭浩强的C语言,准备在家的时候开始学习,结果我高估了自己,哈哈哈,暑假摆烂,结果就是这本书就看了前几章。

2.1.2 研一阶段

当时我们导师这边没有人转码,并且我也不认识转码成功的师兄,身边也没有认识的能帮上我的同学,所以转码对我来说是雾蒙蒙的一片,全部都要自己摸索,可能会走错路,后面确实走了很多弯路。
研究生入学第一件事就是选课,(当时我还试图想通过蹭计算机的课来达到转行的目的,现在看来真是年轻),我们学院有很多课是跟计算机相关的,可以冲学分,所以当时我选了四门 人工智能、分布式数据库系统、数字图像处理、计算机图形学,希望学习这几门掌握一些技能或者认识一些别的专业的学生,请教一下他们怎么学习。结果就是:

1 人工智能老师讲了五节课就不讲了,啥也没学到一头雾水,最后交了个图像去雾算法的大作业,这门算过了
2 分布式数据库系统这门课 老师默认我们已经学过数据系统概论这本书了,所以讲课速度很快,一些名词我都没听说过,什么DDMS,科班同学听的有劲,我仿佛听天书,课下我自己自学了数据库这门课,写了点简单的SQL语句,才听懂这门课讲啥,最后背了背题,最后期末考试过了。
3 数字图像处理老师全程英文授课,没几个人能听懂的,最后和其他小伙伴交了一个目标检测的大作业算过了
4 计算机图像学,这门课是疫情在家上的,是机械学院的老师给上的,都是一些简单的算法,学起来还算可以,最后交一个论文过了。
总结下来就是没学到什么东西,课程难度比较大,还拉低了学分,一度让我放弃了奖学金这个念头

研一干的第二件事就是学Java,之前也是在Java、C++、python中犹豫了很久,最后因为我导师这边她会Java,所以选择学习Java。刚开始不知道怎么学习,就买了一本《Java从入门到精通》开始看不得不说这本书真是“好”,很多业界不用的东西他上面还有(就是AWT,这个东西我学了好久,最后发现没用),而且很多东西讲的太粗糙,只是教API怎么用,就不适合深入学习,我居然还抱着啃了一学期。
接着就放寒假在家了,然后疫情,研一下半学期也耽误了。这大概就是我的研一吧。

总结:学习资料选错了,选课也选错了,学习方法也不对,疫情也耽误了我半年,失去了奖学金竞争资格,也浪费了很多宝贵的时间。

2.1.3 研二阶段

等到能再次返校就到了研一暑假,刚开学见了老师,问我数据挖掘学到咋样了(寒假回家前老师让我学大数据相关、数据挖掘),吓我一跳,于是马上网上买了两本书《Python编程从入门到实践》、《从零开始学Python 数据分析与挖掘》,数据挖掘里面的所有机器学习算法我都手推过一遍,所以这两本书我学到很慢,大概花了两个月时间,结果就是当我学好python和数据挖掘后我问老师我该怎么搞科研,我导也没给我说个很明白,我也是一头雾水,就是感觉这两个月时间浪费了,后面在科研上面我开始摆烂。

研一暑假期间我也是意识到了研一学到那本书不行,于是我买了一本《疯狂Java讲义 第4版》,这本书一千多页,硬是啃完,每天看个五六十页,发现看完之后我的水平好像没有提升,主要原因我光看不动手,学编程和应对期末考试还是不一样的,对付期末考试背背概念和重点,一些练习题多写几遍就能拿个八九十分,但是学编程必须勤动手。真是心态炸裂,感觉时间都浪费了,当时我们学校传出有同学上吊自杀的,我当时也是一度差点抑郁。

后来一个偶然的机会,我和以前电信学院的同学说上话了(我们当时在一个英语小组),刚好聊到我在学Java,正好她也在学Java,然后我就知道了一些培训班的学习路线,一看真吓一跳,要学这么多东西呢。然后就是陷入焦虑紧张的赶进度状态,要学的东西太多了,我以为学一个Java就能就业了,实际上学一个Java离能就业的程度不到 1/10。

然后就开始根据路线学习,我又学了一遍Java,那个路线 Java基础–>Java高级–>MySQL基础–>JDBC–>HTML–>CSS–>JavaScript–>Spring5–>MyBatis–>MySQL高级–>SpringBoot–>Java并发编程–>Redis–>JVM虚拟机–>Java设计模式–>Linux–>Zookeeper–>Rocket MQ–>SpringCloud–>Git–>maven(大致是这个 ,具体顺序可能有出入),我又按照他这个路线都学了一遍(学习时间早上8点到晚上10点,火力全开),期间老师的编程demo我也会敲一遍。然后做了两个练习项目《学生选课系统》《调查问卷系统》,自信满满以为能去找实习了,结果被腾讯打脸,他们都喜欢问原理的问题,一些底层的东西,这是这些辅导班视频没有的,辅导班只是教这个东西怎么用,一些源码需要自己去看。而且我当时没有学计算机网络、操作系统和算法。于是自己根据面经的问题,自己点开源码去看底层实现,看不懂就上网上找找其他人怎么分析这个源码。期间还做了几个别的项目 自己实现的简单秒杀、博客网站。

同时开始刷题以及学习计算机网络和操作系统,当时不知道刷什么题,有个Labladong的公众号,当时把那上面的题刷了一遍,剑指Offer刷了一遍(第一次刷题真是酸爽,一度几近崩溃,算法题真是实现代科举,痛不欲生 !)。计算机网络买了本本科生的教材《计算机网络》,配上B站上方老师的课学了一遍(不建议这么学,比较浪费时间,这里我走了很多弯路),操作系统也是买了本科生教材,《计算机操作系统 第4版》,把书啃了一遍(不建议硬啃,需要挑重点来看)。

买过的和看过的其他的书还有:

《深入理解Java虚拟机 JVM高级特性与最佳实践》、《图解TCP/IP》、《图解HTTP》、《深入理解计算机操作系统》、《大型网站技术架构–核心原理与案例分析》、《数据结构高分笔记》王道考研、《计算机网络高分笔记》王道考研、《Linux鸟哥私房菜》、《算法 导论 第4版》、西瓜书《机器学习 》周志华著、花书《Deep Learning》伊恩 古德费洛著、《SQL从入门到精通(微课视频版)》、《统计学习方法 第二版 》李航著、《数据库系统概论 第五版 》王珊著、《算法与数据结构(Java语言描述)》陈媛著、《PyQT5 快速开发与实战》(当时听室友说他们师兄用这个 我也买来学了学)

这些书有的我全本看完,有的也是拿过来当作字典用,需要相关的知识就翻出来仔细看看,不得不说有的书写的真好,读个十几遍都不嫌多。

这时候老师让写一本书(3月-8月),因为这个耽误了我好长时间,错过了提前批,什么都没准备好秋招就结束了,当时真是心态炸裂。秋招我准备好的时候就快结束了,加上我的项目太简单,刷算法时间不够,面经也没准备好(不知道去哪里背面经),所以秋招下来只拿到了四个offer,新浪、度小满、东方财富、用友。

总结:
1 找后端工作没必要把时间浪费在前端上,做项目时,我所有前端的js都是我自己一个个手敲上去的,一些DOM操作我还做了笔记。

2 算法刷题没刷到重点,我后来才知道大家都刷LeetCode 高频题,前100或者200,我只刷了一遍Labuldong,剑指刷了一遍。感觉还是不太够。

3 面经没找到重点,我的面经都是自己总结的,很多答案都是自己上网上找,所以很多答案都是错误的或者不全或者不深入,导致面试的时候我自认为答对了,其实答错了,这是最致命的,想想自己辛辛苦苦背的八股文都是错的就心酸,晚上神经紧绷无法入睡,秋招那几天曾一度只能靠褪黑素入眠。

4 项目太简单,我看别人的项目都是抄一个分布式的项目,我自己的项目还是那种老掉牙的管理系统,并且技术也不行

5 错过了提前批,提前批开启时我在中期答辩以及写老师的书。

因此因为 准备时间不充分,时间花在了前端上,准备的项目太简单,准备的八股都是错误的,刷的算法题没刷到高频题,所以秋招完败!如果当时有个前辈能指我一条明路就好了,真不是我不努力,我只是方法不对,没有途径。

2.1.4 研三阶段

秋招结束,我也进入到了研三,这时感觉天都塌了,自己规划了这么久,这个结果真是很难受,我曾无数次梦见我进大厂,醒来却发现是梦。加上这时候导师催我搞毕业的东西,写的那本书还要修改,真的是腹背受敌,那段时光真是人生至暗时光。

在面试携程的时候,我记得一面面试官曾经提醒过我,建议我去慕课网上找一个大几千的课,好好学一学,别去B站,B站上的课质量很低,所以11月份我再次打起精神,为春招冲刺做最后的准备,这里非常感谢携程那个面试官(面试前特地问了我家是不是新乡的,我说是,可能他和我是老乡,他想拉我一把,最后他还是让我过了,并且过了十几天才携程2面,应该是给我留缓冲时间,可惜我当时没把这句话放心里面去,携程2面 项目上把我挂了),有的时候就是别人的一句话就能少走很多弯路。

于是我打开慕课网,选了一个秒杀课,详细的做了做。从前台到后台、到数据库,买服务器,压测,nginx 、tomcat 、令牌桶、泄洪、消息队列等一系列走下来,确实感觉自己学到了很多有用的东西。做完之后感觉还差点分布式,于是找了一个基于Spring Cloud的广告项目做了一下,这时感觉项目没问题了。

接下来就是准备毕业的东西了,期间也是看了大量的论文,最主要也是最难的是要明确自己论文 是为了解决什么难题,我这里比较幸运,老师给我提出的问题是补全数据,并且开发一个LCA计算平台,这刚好是我当前技术栈以及当前所学习的算法完全能cover的,之后老师说我的难度不够我又加了一个NLP相关的问答机器人上去(去慕课网上看了很多NLP实战的课程以及看了很多NLP的论文,用Java代码实现了一下)。所以整个计算平台的开发 我一共只花了15天,后续功能改进也花了几天,整个毕业的东西(平台开发(前台 后台 数据库 发布上线)、算法调研、加上写大小论文)差不多一个半月搞定(写论文是寒假在家,每天的作息依旧是9点-22点,最晚的时候9点-凌晨2点)。之前学的JS、BootStrap都没白学,写前台的时候用上了,这个网站用了很多智能算法都是Java实现的,比如手写神经网络等。最终统计代码量46000行。同时该项目也可以作为我春招找工作的砝码。至此项目没问题了(选课系统、调查问卷系统、秒杀系统、博客网站、广告系统、LCA计算平台)。

接着就到寒假了,寒假期间知道了应该刷哪些算法了,于是刷了牛客TOP101的题,寒假刷了两遍(你体会过大年三十刷算法到晚上12点的滋味吗?),开学刷了一遍,面试前刷了两遍,剑指offer之前刷过三遍,所以春招之时我的算法情况是 TOP101 刷了5遍,剑指offer 刷了3遍。算法这块OK了。

之前知道JavaGuild,只是没注意,寒假静下心来看JavaGuild写的东西,确实写的挺好的,于是寒假在家我把JavaGuild背了一遍,到面试之前,每面一次我就背一遍。所以春招下来JavaGuild我至少背了3遍,面经这块没问题了。

2月28号我正式开始投递简历,所有能投的都投了一遍(字节、阿里、美团、快手、贝壳、携程、蔚来、虾皮、B站、米哈游、滴滴、腾讯、京东、小米、oppo、腾讯云),结果只有字节、美团、快手有消息,不得不说今年春招是真的惨(要么锁HC、要么没有春招、要么卡双9学历 ),字节没看清题结果笔试就没过,剩下只有美团、快手约面,面试全程几乎没有不会的,算法题直接秒杀,项目问题回答行云流水,快手顺利拿下offer,美团卡在了主管面,到了主管面我才知道我的简历都没改过来,一面、二面拿到的简历都是我秋招投递的老简历,我面试过程中讲的项目那个简历上都没有,但是还是让我过了,可能到主管了比较多疑,同时我也对美团打车不了解,有个致命问题回答错了,主管问我用过美团打车没,我说没有(场面一度很尴尬),后面他给我出了两个计算机图形学的算法,(对! 就不是普通算法,就open cv中写好的那种函数库,他让我说这个算法思路 ),但是我还是凭借我强大的数学能力以及逻辑思维能力给出了思路(题目是:1. 求10000个点的最大外接矩形 ,2. 10000个点的最大外接圆),尽管如此最后主管还是把我挂了,所以我感觉美团能过,只是我简历没投过去并且不了解这个部门(一面说的地图部门,谁知道地图就是打车?我还以为是外卖员送外卖的那个地图)。因此我的春招就结束了,快手和美团都是一周走完流程。至此转码之路走至终点,我如愿以偿进入了自己满意的公司。

3月25号接到快手offer那一刻我感觉有一束光照在了我身上。经历过如此种种,如果一开始就有人带我,告诉我怎么学,学什么,我应该不会这么狼狈吧,也不会走那么多弯路,感谢没有被困难打倒的自己坚持了过来,我相信天道酬勤,我相信世上无难事,只怕有心人。

2.2 学习路线

作为过来人,如果你是非科班想要转码的话,这是我列出来的学习路线,希望能帮到有需要的人。

2.2.1 Java部分

学了以下部分你只是刚入门,一些原理性的东西视频讲的不深,还需要补充

1 Java :宋红康老师Java700集 https://www.bilibili.com/video/BV1Qb411g7cz?spm_id_from=333.337.search-card.all.click
2 MySQL基础+高级:尚硅谷350集 https://www.bilibili.com/video/BV12b411K7Zu?spm_id_from=333.337.search-card.all.click
3 Java web:325 集https://www.bilibili.com/video/BV1Y7411K7zz
4 Spring5:62集 https://www.bilibili.com/video/BV1Vf4y127N5
5 MyBatis:66集 https://www.bilibili.com/video/BV1VP4y1c7j7
6 Spring Boot:87集 https://www.bilibili.com/video/BV19K4y1L7MT
7 maven:173集 https://www.bilibili.com/video/BV12q4y147e4
8 Git: 狂神的14集 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.337.search-card.all.click
9 JVM:宋红康 381集 https://www.bilibili.com/video/BV1PJ411n7xZ
10 Java并发编程:尚硅谷 JUC43集 https://www.bilibili.com/video/BV1Kw411Z7dF
11 Redis:狂神36集 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.337.search-card.all.click
12 Spring Cloud :阳哥150集 https://www.bilibili.com/video/BV18E411x7eT
13 数据结构与算法: 尚硅谷194集 https://www.bilibili.com/video/BV1E4411H73v?spm_id_from=333.337.search-card.all.click



2.2.2 书籍推荐

看完这些书 弥补视频课讲的不深的缺点
1 计算机网络《图解TCP/IP》 《图解HTTP》,结合这面经来看
2 操作系统《深入理解现代操作系统》 ,同样结合着面经来看
3 数据结构与算法 《算法导论》 第4版,配合着视频来看,有不懂的来这本书上找
4 JVM 《深入理解Java虚拟机 JVM高级特性与最佳实践》,结合着JVM的视频补充着来看
5 Java并发编程 《Java并发编程的艺术》结合这视频相互补充来看
6 Java 设计模式 《大话设计模式》 ,关注常用的那几种就行,单例、代理、观察者、模板方法、适配器、工厂
7 MySQL数据库 《Inndb 技术内幕》,和面经补充这来看
8 Redis 《Redis设计与实现》

2.2.3 算法

算法题建议直接刷 牛客TOP101,如果有时间可以刷LeetCode 前100,200,300,400,看个人时间,剑指Offer建议刷一遍。最后算法题不再于刷的多少,在于是否掌握并举一反三,最少刷个两遍吧,做到刷过的题10分钟内内准确无误的写出来。

2.2.4 面经

1 背诵JavaGuild:https://javaguide.cn/java/basis/java-basic-questions-01.html#%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B8%B8%E8%AF%86

2 注意牛客网上别人的面经分享,那个面经是最新的,也要自己总结下答案

2.2.5 项目

建议去慕课网上找一个中等难度的项目,然后吃透一个就行了,里面如果涉及到其他技术的话就去学习并弄懂,所有细节不要放过。

推荐 秒杀和广告,这两个有难度并且也比较热门。
最好自己确确实实写了一个项目,自己给自己提需求,改进一个功能等。

2.2.6 简历

简历的话简洁一些就好,我当时的简历如下,可以参考我的简历来写,写清楚项目的难点,效果,你做了什么,什么技术栈

image.png

三、快手面经

3.1 快手一面 基础面

1 自我介绍+项目介绍
1.1 你是怎么来一步步设计系统的
1.2 系统都包含哪些模块
1.3 怎么来实现减碳目标的
1.4 如何计算出一个机电产品的绿色度
1.5 你在其中遇到过什么问题,如何解决这个问题,达到了什么效果
1.6 为什么零件树结构需要先从叶子结点开始计算?不能只计算自身结点吗
1.7 为什么选择转行
1.8 看过哪些技术书籍
2 java中的集合有哪些?他们都各有什么特点?

3 java中线程安全的数据结构有哪些?

4 synchronized的锁升级过程?
(synchronized在jdk1.8 优化了什么,如何从偏向锁升级为重量锁的,加锁解锁过程详细讲一下)

5 synchronized和reentrantlock的有什么区别?

6 synchronized的底层原理?讲一下如何避免加锁?

7 hashmap的put元素的过程?hashmap底层数据结构是什么?如何解决哈希冲突的?

8 volitail 的作用是什么?

9 volitail 如何保证可见性?

10 volitail 怎么禁止指令重排序?volitail实现读取主内存数据的具体过程?

11 JVM中的垃圾回收器有哪些?都采用的什么垃圾回收算法?

12 cms垃圾回收器的回收过程?

13 cms垃圾回收器有什么缺点?

14 g1垃圾回收器讲一讲?

15 g1是回收哪里的,采用的什么垃圾回收算法,有什么特点?

16 解释下什么是局部性原理?

17 虚拟内存是什么?有什么作用?

18 虚拟内存是如何来进行内存管理?

19 操作系统中进程与线程的区别?

20 线程切换讲一下?

21 进程如何切换?(黑人问号??这里不会)

22 TCP三次握手的详细过程?

23TCP四次挥手的详细过程?

24 为什么是四次挥手而不是三次?

25 TCP如何保证可靠传输?

26 IO讲一下(NIO BIO AIO) ?

27 select poll epoll讲一下?

28 数据库索引讲一下?

29 innodb和myIsam存储引擎的非聚簇索引有什么区别?

30 最左前缀法则讲一下?

31 为什么会索引失效?

32 什么时候会触发老年代垃圾回收?

33 full gc的时机?

34 为什么会full gc ?

35 说两个引起full gc的场景?
(说了内存泄漏和超大对象直接老年代分配,面试官补充:这种场景一般发生在sql查询了超量数据所导致的超大对象直接在老年代分配,进而引起堆空间不足,触发full gc)

36 数据库事务的隔离级别有哪些?

37 解决了什么问题?

38 事务的四大特性A C I D都是如何保证的?

39 spring cloud用过吗?

40 kafka消息可靠性是如何保证的?

41 消息队列的作用是什么?为什么要使用消息队列?

42 为什么要有微服务?

43 linux用过吗?有用过linux发布过项目吗?
(这里讲了我linux服务器挖矿病毒排查以及数据库被入侵的故事)

44 如何根据进程名字查出来pid,并杀死该进程?这条linux指令怎么写?
ps -ef | grep ‘进程名’ //找出来进程号
kill -9 pid //杀死进程

45 看你项目里用了神经网络,神经网络的输入、输出是什么,是用来干什么的?

46 算法的准确度是多少?如何确定神经网络的参数的?

47 bean对象加载的生命周期讲一下?

48 spring实现自动装配过程?

49 spring用到了哪些设计模式讲一下?

50 spring 的ioc和aop讲一下?

51 aop实现的原理?什么时候使用aop这个功能?

52 jdk动态代理和cglib动态代理的区别?

53 静态代理和动态代理的区别讲一下?

54 B+树索引的原理和结构讲一些?

55 算法题
白板手撕,代码环境没有任何提示,最后看你调试的次数
第k个最大数 要求 时间复杂度O(nlog(n)) 空间复杂度O(1)
(让写了两种解法:1 优先队列解法 2 快速排序解法 直接秒了)

56 能不能手写一个优先队列?

57 堆这种数据结构的插入和删除的过程?

58 快速排序算法的时间复杂度?

59 推送式的消息队列有哪些?拉取式的消息队列有哪些?

60 反问环节
1 团队规模多大
2 团队的氛围怎么样,从技术和生活两个方面回答

3.2 快手二面 项目面

说一面面试官问的太全了,二面就不问基础知识了

1 秒杀是怎么做的,讲一下流程?
(讲了大约10分钟 从nginx 到 tomcat 再到 秒杀大闸、令牌桶、队列泄洪、消息队列都讲了一下)

2 如何解决超卖问题,超卖问题为什么会产生?

3 先删缓存再扣数据库库存,如何保证第二步不会失败?

4 你的QPS 和 TPS优化前后的数据都是怎样的?

5 我们公司系统的QPS上限100万,现在需要应对QPS 200万的场景应该怎么做?

6 除了用降级、熔断、限流,还有没有其他方法?
(讲了负载均衡 、水平扩展、验证码手动错峰 以及 消息队列削峰)

7 你还用了Guava cache,这个cache的底层实现源码看过吗?

8 如果你来实现一个Guava cache,你应该怎么设计?

9 redis的内存淘汰策略讲一下?

10 redis如何实现判断key过期,用了什么数据结构?

11 讲一讲你另一个减碳的项目吧
(讲了大约25分钟)

12 算法题
LRU缓存淘汰 白板手撕 (写了很多遍了 直接秒了)

13 反问
1 团队目前最大的难题是什么?除了秒杀,还有什么很难的业务?
2 我问了一些我对业务方案的困惑 (高密度cpu计算+数据库查询的混合任务)到底算IO密集型还是cpu密集型,线程池参数应该怎么调
3 如何实现前端提示异步任务计算结束的功能
我提出的是方案是 长轮询
面试官说 长轮询是一种方案 让我回去看一下另一种解决思路,长连接

3.3 快手三面 主管面

1 你觉得你前两面回答的怎么样?

2 你是怎么学习的?有没有系统的学过计算机的知识体系?

3 B站上都看了哪些教学视频?
尚硅谷

4 你觉的他们讲的怎么样?
我说他们讲的不深入,光靠看他们的视频进大厂远远不够,需要自己再学一些东西

5 学Java用了多少天?
我说20天,因为以前都看过书,所以2倍速直接刷过去

6 一共几集?
700集

7 每集多久?
10到20分钟

8 再考你一个,Treemap 和TreeSet底层数据结构是什么?
回答红黑树

9 mysql索引是什么数据结构?
回答B+树

10 为什么Mysql不用红黑树做索引?反过来为什么Treemap 不用B+树作为他的底层数据结构
这里我分析两种数据结构的优缺点,树的层数变高 、范围查询、 结构调整、 时间复杂度这些
他说不对,我还是想不出来 ,坦白这块儿是我的知识盲区

11 你秋招拿到了什么offer?

12 春招拿到什么offer了?

13 美团地图和快手电商你选哪个?

14 能马上过来吗?

15 反问
快手电商的市场份额排第5名,快手的头号竞争对手是抖音,那么快手电商相对于抖音电商的优势在哪里,劣势在哪里?如何赶超他们?

3.4 快手四面 HR面

1 自我介绍

2 有什么优点

3 有什么缺点

4 你对薪资这块有什么要求

5 你还有哪些offer

6 能过来实习吗?

7 自己的职业规划

8 如何看待快手?

9 你觉得你为什么值这么多钱?

10 你之前有没有遇到过很大的挑战,你是如何克服他的?

11 你有什么兴趣爱好?

12 为什么打算和上家公司违约?

13 如何看待公平

14 为什么没有实习

15 你的导师如何评价你

16 你认为什么是一个好的工程师

17 你是如何学习的

18 你认为一个优秀的人是一个什么样的人?

19 你觉得有自己的优势在哪里

20 没有反问 直接谈薪

四、总结

确实非科班转码有很多困难,难点在于没有人带,不知道学什么,不知道怎么学,不知道去哪里找面经,不知道学习路线,不知道算法怎么刷,不知道去哪里找项目,不知道项目怎么做,不知道哪里是重点、没有人可以讨论遇到的难题、科研所导致的学习时间不够以及周围人的冷眼等等一系列困难。

此外作为一个背弃本专业的人,你极有可能遭到他人的排斥,因为你是他们中间的异类,所以这时候需要放平心态,有句话说的好:且视他人之疑目如盏盏鬼火,大胆走你的夜路!并且你要做好自己一个人解决所有问题的准备,因为你碰见的所有困难都没有人可以请教,你只有靠自己才可以,学自己的本专业的课,哪个题不会了回去和室友讨论一下就行了,因为大家都学的这本课,你不会总会有人会,但是转码可是全靠自己一个人解决问题,没有人能请教。

同时科研方面,导师也可能会阻碍你的学习进度,这时候需要你有个时间规划,平衡好科研与学习。基本上我在转码学习的过程中就是全年无休,早上9点到晚上10点,一周七天。因为时间确实不够用,此外大脑高速运转,保持精神紧绷的学习状态也很累,身体和心理上双重折磨。

最后,最难的就是自己不能轻言放弃,以上我的叙述好像是学习这些东西没有难度一样,实际上难不难谁学谁知道,一个知识点没有人带的情况下,可能需要好几天,甚至看很多资料才能搞明白,Java并发编程,JUC原理,JVM那些底层的东西谁学誰知道,绝对让你痛不欲生,计算机专业课这难度我感觉能排进工科前五,至少和机械专业课比起来难度可是加大了不少,你要是觉得简单,那我估计你的操作系统、计网、数据结构与算法或者计算机组成原理没学好(大佬学啥都满分的除外)。学的好指得是能写出来代码,那些背背概念,复习老师重点的,数据结构和算法拿九十分那不叫学的好,学的好应该是所有算法可以不看书短时间内快速手写实现。

最后的最后,如果你是非科班,看完了这些还是决定转码,那么恭喜你能做出来这勇敢的决定你已经超越了大部分人,接下来就是努力学习吧,本着学不死就往死里学的心态,毕竟高考、考研都挺过来了,这又算个啥。

Logo

前往低代码交流专区

更多推荐