零基础转行程序员自学3年终于在金九银十季成功,三面“拿下”拼多多

前言

先来自我介绍:

老家农村,家里好不容易把我送到大城市读书,大学非985,211,但在我们老家,能出一个本科大学生也是非常不容易的。因为农村信息的相对闭塞,我对大学专业一无所知,加上分数并非前茅,最后被调剂一个机电专业,觉得现在人人都离不开电器,学电最起码不会失业吧。

为什么学编程?

接触到编程是一次很偶然的机会,在校内的时候参加兴趣小组,对方是自己的学长,他是计算机专业的,毕业后就进了一线互联网公司,那之后就偶尔有跟他聊人生聊未来,一次契机,他劝我何不自学编程,来做程序员?后来考虑了很久,自己也综合对比了各行各业的发展,最后决定学习编程,选择了Java方向。

下文,我会对我的自学方法、自学资料以及我的面试经历进行一个分享,若有需要自学资料的朋友,可以看文末获取免费资料包进行下载。

拼多多服务端开发三面还原(一二面+HR面)

拼多多一面(大约1h左右):

  • 讲一讲 final / finally的区别
  • try-catch-finally在不同情况下的执行顺序?
  • finally里return和外部的return谁覆盖谁?
  • wait / notify / notifyAll说一说?
  • notify唤醒线程之后可以立刻执行吗?
  • sleep / wait的区别?
  • Java 的线程有哪些状态?
  • Java 堆的分布?
  • 为什么要分出两块 survivor?
  • Mark-Copy 的流程?
  • 什么情况下会触发 Full GC?
  • Full GC 和 Minor GC 的耗时比例?
  • 老年代和新生代的空间大小比例?
  • HTTP 状态码列举一些?
  • connect 失败会报什么异常?
  • IO 分类?NIO 是阻塞的还是非阻塞的?
  • 聚集索引、联合索引、覆盖索引解释一下?
  • 口头设计一个表和索引,然后说一说哪种查询会走联合索引,哪种会走覆盖索引?
  • 聊项目,以及项目的困难点?
  • 手撕算法环节:有序数组 / 链表转平衡二叉树

拼多多二面(大约50分钟左右):

  • 自我介绍
  • 聊聊项目
  • TCP 的流量控制和拥塞控制说一说 查问:接收窗口的空间是怎么分配的?是不是多个 TCP 连接共用一块内存还是各自有独立的?
  • TCP 和 UDP 的区别
  • 网络的五层模型,每一层有什么协议?
  • PING 命令用的是什么协议(是 ICMP,我没答上来)
  • OS 的内存管理、进程管理说一说
  • 物理内存空间、虚拟内存空间?
  • 虚拟内存的作用?
  • 内存的连续空间不够分配的时候怎么处理?全局内存的空闲空间不够分配的时候怎么办?
  • 快排和归并的复杂度,快排的退化
  • 平衡二叉树各种操作的时间复杂度
  • AVL 树和红黑树的区别?
  • 红黑树的应用?JavaTreeMapAPI 为什么不用 AVL 树?
  • B 树和 B+ 树的应用?有什么区别?为什么 MySQL 用 B+树?
  • Redis 和 memcache 的区别?Redis 何以高性能?(这里我暴露了自己的菜鸡水准,面试官耐心地指正了我对于他俩的错误认知)
  • 异步非阻塞 IO 了解吗?(扯了点事件分发器的 Proactor 模型,面试官认可了)
  • 手撕算法:二分查找变形题,浮点数的等差数列,一开始公差是1.0,在某一个位置公差变为0.1,找到该位置
  • 看你写的之前送外卖?为什么毕业之后没有从事自己本专业内的工作?(我回答的想多赚钱)
  • 你的Java是自学的?怎么坚持下来的?期间遇到什么困难吗?
  • 手头上有哪些 offer ?

拼多多三面(HR面大约30分钟):

  • 对拼多多有什么了解?给拼多多做一个画像?
  • 家是哪儿人?对于未来的就业城市有什么想法?
  • 有女朋友吗?
  • 目前面了哪些公司?对于目前投的公司有什么偏好吗?
  • 有想象过在拼多多工作的一天吗?对薪资有什么要求?
  • 从哪些渠道了解互联网相关的讯息?
  • 如果拼多多把你挂了,你觉得会是什么原因?我和你聊了二十分钟,你觉得你的哪些非技术性的综合素质可能不如其他候选者?
  • 薪资
  • 你有什么想问的吗?

其实这些题都在我收集的这些文档中刷到过

 

 

这三年来,我是如何自学的?

(1)观看零基础学习视频

看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,首先学习Java语法基础,再到框架,从基础到深入,还是很容易入门的。至于视频,网络上实际上有一大堆,我这边是学长给我的珍藏版,应该是搜索不到,如果你需要,当然我也可以免费分享给你。

Java零基础视频

(2)阅读前辈的一些书籍和笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

书籍和笔记

深入实践SpringBoot

(3)动手实操做一些小项目

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所***用到实际当中去,所以当我把框架学完之后,就自己去动手去做了个小的商城项目。关于这个商城项目的教程,你有需要我也可以分享出来。

 

 

(4)加一些社群,找一个好师傅

如果真考虑要转行学习Java,那就多交一些志同道合的朋友,甚至是去找一个好的师傅带带你,这是我给你最真实的建议。加入一些社群,参与到一些技术讨论时,能够极大地提升我自己的学习积极性,另外找一个师傅带带自己,学习和实操过程中遇到的很多问题就比较好解决一些,整个效率也就提升得比较快了。

 

总结

对于转行做程序员,我能成功靠什么?两个关键词,决心和毅力!

如果你下定决心,做了选择,就一定要坚持到最后。

如今我已成功转行,现在在这个行业只算得上一个新人,但随着岁月增长,我会慢慢成为一名“老猿”,但我也会依然把自己这颗学习的心保持到老。同样的,我也希望你在青春迷茫时,能不要放弃,因为每个人,都有柳暗花明的那一刻。

最后,文章中所涉及到的一些学习视频、学习资料或是项目,都可以免费分享出来,若你需要这些:

 

全部评论

相关推荐

11-23 17:35
已编辑
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
头像
10-13 18:10
已编辑
东南大学 C++
。收拾收拾心情下一家吧————————————————10.12更新上面不知道怎么的,每次在手机上编辑都会只有最后一行才会显示。原本不想写凉经的,太伤感情了,但过了一天想了想,凉经的拿起来好好整理,就像象棋一样,你进步最快的时候不是你赢棋的时候,而是在输棋的时候。那废话不多说,就做个复盘吧。一面:1,经典自我介绍2,项目盘问,没啥好说的,感觉问的不是很多3,八股问的比较奇怪,他会深挖性地问一些,比如,我知道MMU,那你知不知道QMMU(记得是这个,总之就是MMU前面加一个字母)4,知不知道slab内存分配器->这个我清楚5,知不知道排序算法,排序算法一般怎么用6,写一道力扣的,最长回文子串反问:1,工作内容2,工作强度3,关于友商的问题->后面这个问题问HR去了,和中兴有关,数通这个行业和友商相关的不要提,这个行业和别的行业不同,别的行业干同一行的都是竞争关系,数通这个行业的不同企业的关系比较微妙。特别细节的问题我确实不知道,但一面没挂我。接下来是我被挂的二面,先说说我挂在哪里,技术性问题我应该没啥问题,主要是一些解决问题思路上的回答,一方面是这方面我准备的不多,另一方面是这个面试写的是“专业面试二面”,但是感觉问的问题都是一些主管面/综合面才会问的问题,就是不问技术问方法论。我以前形成的思维定式就是专业面会就是会,不会就直说不会,但事实上如果问到方法论性质的问题的话得扯一下皮,不能按照上面这个模式。刚到位置上就看到面试官叹了一口气,有一些不详的预感。我是下午1点45左右面的。1,经典自我介绍2,你是怎么完成这个项目的,分成几个步骤。我大致说了一下。你有没有觉得你的步骤里面缺了一些什么,(这里已经在引导我往他想的那个方向走了),比如你一个人的能力永远是不够的,,,我们平时会有一些组内的会议来沟通我们的所思所想。。。。3,你在项目中遇到的最困难的地方在什么方面4,说一下你知道的TCP/IP协议网络模型中的网络层有关的协议......5,接着4问,你觉得现在的socket有什么样的缺点,有什么样的优化方向?6,中间手撕了一道很简单的快慢指针的问题。大概是在链表的倒数第N个位置插入一个节点。————————————————————————————————————10.13晚更新补充一下一面说的一些奇怪的概念:1,提到了RPC2,提到了fu(第四声)拷贝,我当时说我只知道零拷贝,知道mmap,然后他说mmap是其中的一种方式,然后他问我知不知道DPDK,我说不知道,他说这个是一个高性能的拷贝方式3,MMU这个前面加了一个什么字母我这里没记,别问我了4,后面还提到了LTU,VFIO,孩子真的不会。
走呀走:华子二面可能会有场景题的,是有些开放性的问题了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务