双非同学,自学编程,毕业一年逆袭百度!

Posted 程序员鱼皮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双非同学,自学编程,毕业一年逆袭百度!相关的知识,希望对你有一定的参考价值。

大家好,我是鱼皮,最近秋招快到了,我就想着给大家找一些优秀的程序员面经分享。希望可以帮助准备求职的同学更稳地上岸,同时帮助学编程的小伙伴们更好地明确学习路线和方法。

今天要分享的呢,是一位 双非非科班 同学小黑的励志故事,我也会补充一些个人看法,锦上添花。

芜湖起飞!

面经已得到原作者授权

作者:牛客 Matthew_black

背景

大家好,我是小黑,双非非科班出身,大四下才开始自学计算机,毕业后在 4399 做前端,base 广州。

说是做前端,其实我干的事情非常杂,经常要自己写后端接口和数据库,部门经理也打算让我走后端的路,所以满一年后,我打算找下家专注前端。

鱼皮:双非非科班,大四才开始自学计算机,就找到了一份前端工作,说明肯定是下了很大功夫的。而在工作之后,依然可以坚持自己的学习方向,有明确的目标,这点难能可贵。

面试前的准备

1. 简历

校招简历可以不带项目或者实习,有的公司甚至 985 科班就可以进,但社招相对比较侧重技术和业务维度,如果你是业务巨人,也可以弥补技术的不足,考量的维度会比校招更多维。因此简历作为第一关,是至关重要的一环,在开始求职前先好好准备一份简历吧~

鱼皮:对于名校同学来说,校招简历也许可以没项目或实习经历。但对于更多普通学校的同学,建议大家多做项目、尽早去找实习,否则简历上根本没有亮点!分享下我自己的写简历技巧和模板,公众号【程序员鱼皮】后台回复 ”简历“ 获取。

2. 算法

算法主要就是刷 LeetCode,可以不会写 Middle 题,但不能没有常用算法的思维。面试季让自己保持算法的思维非常重要,不止体现在写算法题上,在和面试官交流到一些源码思想的时候也可以帮助自己更流利地表达和讲述。

楼主的复习思路(菜鸡的思路)是好记性不如烂笔头,一道题 7 天之内一定要再写一次,才不会被遗忘曲线影响。对于一些较难理解的常考题目,建议多写几次记住思路。写题目时不一定要在一道题上死磕,做不出来就多看看类似题目,学学算法思想、理清思路再做,一定要找到做题的感觉。

小黑同学也提到了,好记性不如烂笔头,学算法一定要多写,不仅写代码,还可以写题解,有助于自己强化记忆和复习。

关于我学算法的方法,可以阅读这篇文章:刷了 1000 多道算法题,一点心得

3. 复习准备

因为主要的求职目标是前端,所以复习前端为主,但也复习了部分后端的知识。

前端:计网( http、tcp、响应头请求头等),前端三剑客(html、CSS、javascript),Vue 框架(源码),Webpack(常见优化思路),微前端(架构及发展趋势),node(Koa 框架),设计模式(主要是 MVVM 和 MVC)。

后端:数据库,Redis,Linux 系统,nginx 等。

再撸几十篇牛客面经,就万事俱备了。

复习的资料和时间安排如下:

第一阶段

四月的时候侧重基础,查漏补缺,直接找总结好的博客或者 Github 项目,推荐我男友(不是)的日记:

指路:https://github.com/WindrunnerMax/EveryDay

他的博客总结的很齐全,分类也很完善,复习基础的时候基本每天看个四五个小时,对于我这种基础不扎实的菜鸡非常友好,建议大家去看看。

第二阶段

五月份的复习侧重框架和业务优化,组织了几场模拟面试,发现自己对 Vue 完全不熟练,所以把 Vue 文档和源码分析从头到尾 看了几遍 ,渐渐理解了一些面试官的问题。

对于业务优化方面,要总结好自己在日常业务遇到的坑和优化点,如优化了首屏加载。可以从多个维度去讲,组织语言的时候尽量从各点出发,不要杂糅成一团,否则即使说对了也会让面试官觉得你思路很乱。

五月的时间我基本用来复习框架和看一些进阶的常考点如 ES6 和 Webpack 等,而算法是贯穿整个求职周期的,所以在这个月也简单复习下。

Vue 源码分析:https://vue-js.com/learn-vue/

更细的知识点之前收藏了一篇大佬写的文章,上中篇基本涵盖了全部前端 Js 知识点,给有兴趣的同学指路:

复习小点总结:

上:https://juejin.cn/post/6844903776512393224

中:https://juejin.cn/post/6844903801153945608

鱼皮认为这是一个非常好的复习路线。先打基础,再由浅入深地看框架,并且结合项目和工作实践去分析框架(中间件)的作用,在整个过程中持续复习算法、阅读面经。

对于想学习前端的朋友,也推荐看看我梳理的 前端学习路线,帮助你快速了解前端的重点知识。

4. 好书推荐

看一些好书能帮助理清一些枯燥的知识点,比如计网和 JS 一些概念性的东西(作用域等),这里推几本好书,在面试季前可以多翻翻,有助于复习理解:

  1. 《你所不知道的 JS 上中下卷》

    推荐理由:挺不错的一本书,把js口语化,语言风格诙谐,示例更多,更易理解

  2. 《JavaScript 高级程序设计》(也叫红宝书)

    推荐理由:入门级的教科书,新手菜鸡常备

  3. 《Tcp / Ip 协议簇》

    推荐理由:被大佬安利的一本好书,把 Tcp 握手和挥手描述的特别细,如果你在面试时也可以这么描述,也许能博得面试官丢丢好感。

  4. 《深入浅出 Node》

    推荐理由:Node 文档还是偏运用层面,有用到才去查,生啃有点吃力,所以可以通过这本书入门。

  5. 《深入浅出 Webpack》(暂未开卷,打算近期启动)

  6. 《ES6 入门教程》

    推荐理由:阮老师著作,看就完了,不多述

另外的,自己还找了一些课程来看,偏向计网的一些课程,如 B 站一些老师的网课,讲的也很不错。

指路:https://www.bilibili.com/video/BV1c4411d7jb

这几 P 帮我在百度二面讲网络的时候帮了很大的忙,面试官也比较满意这一点。

鱼皮:都是前端方向比较经典的书籍,在编程导航(https://www.code-nav.cn)可以免费下载。

接下来是我参与的几轮大厂面试的经验分享,包括腾讯、阿里、百度。

腾讯云面经(base西安)

1. 一面

我当时正处于刚开始复习的阶段,虽然问的东西非常简单,但真的被虐的很惨 ==

  1. 自我介绍

  2. 介绍一个满意的项目,亮点(模块化思想)

  3. react会吗(答不会,没学过)

  4. 其他技术栈(react,angularJs,jquery,vue3掌握情况)

  5. vue掌握程度(答掌握工具,知悉其中一两个)

  6. vuex介绍,工作原理(答得不好,复习的不多)

  7. eventBus介绍,和vuex对比,优缺点

  8. 如果没有vuex,会有什么问题?(组件传值;避免频繁请求)

  9. 后台频繁请求有压力,有什么方法可以避免?

    回答:1. 防抖,限流 2. 本地缓存或 sessionStorage

    又问:不能用缓存保存有什么方法?答:Node 中间件,不接受请求

    又问:没有 vuex 怎么缓存?答:那使用全局变量?

    又问:一定要使用全局变量么? 答:否,但不知道还有啥。。。

  10. 组件传值方式(8 种,详见朝阳日记)

  11. EventBus 介绍,使用业务场景,和 vuex 对比,优缺点,对 EventBus 熟悉吗?(答:不熟,这部分挺致命,抠得很细)

  12. 子组件如何修改父组件的值(通过 v-model 或者 $emit)

    不能用 v-model(等同于问 v-model 实现原理)

    v-model: 语法糖,本质是双向绑定,@input(onInput事件)

  13. vue的双向绑定缺点,defineProperties缺点(顺便答了vue3优化)

  14. vue3了解吗(不了解,还没开始学)为什么是用.value读值

  15. 跨域常见原因,同源策略作用,没有跨域会做什么(答了XSS攻击,CSRF攻击会更容易)

  16. XSS 攻击和 CSRF 攻击

  17. 为什么说CSRF攻击是利用网页利用浏览器信任?

    答 cookie,面试官不满意,还有别的吗?答了同个域,回到跨域,同源信任,感觉还是不对

  18. 跨域方式(JSONP,设置请求头)

  19. JSONP缺点

  20. 设置多个跨域请求头的方法(数组) 回到前端响应头是以什么样的形式(答了源,面试官说大体没错)

  21. 前端到后端请求的详细过程(301,302,304…)

  22. options预检请求作用(白给…完全不熟悉)

  23. 函数式编程与面向对象的区别,优缺点(再次白给…)

  24. 闭包是函数式编程吗?(是)

  25. 补充项目(多线程压缩gif,web worker)

  26. 避免二次请求,once函数(答了防抖和http2.0限制进程,面试官说没到后者那么深)

  27. 反问评价(面试官答他们技术栈用的是react,vue用的较少,评价候选人vue基础并不深,需要好好巩固,不过只有一年经验也足够,要好好沉淀)

面试结果可想而知,几天后显示挂了,收到感谢信。

鱼皮:能把面试的题目和自己的回答记录的那么详细清楚,说明是面试完立刻复盘了,这是一个很好的习惯,面试完后一定要积极总结,每一轮的问题都有可能在之后的面试中再次遇到。

阿里 - 创新事业群 UC 事业部面经

1. 一面 Leader 面

面试官竟然就是我的内推人,还是部门 Leader,感觉气场很强,不过还是专注撕逼,没被镇住。

  1. 自我介绍

  2. 疯狂问公司项目和业务,你遇到过的问题,怎么提升运营留存率balabala(撕了半小时业务)

  3. 压测过机器吗,大概读或者写是多少(答十几万,读写综合)

  4. 实现累充充值接口的思路,如何保证实时性?

  5. 看你项目写了 vue,问点 vue 吧(终于正常问了),v-if 和 v-show 的区别(就这,没了)

  6. osi 七层模型(面试前没看,面试官嘲笑我是不是忘了)

  7. webpack

  8. 公司架构如何?

  9. 公司数据库如何部署的?(分布式部署,一台做源机做映射)

  10. 反问(业务,架构)

整个面试体验很差,感觉全程在套方案,不像面试,也许这就是大佬的面试吧。面试结束后,面试官和我说会再找一个候选人横向对比(指养鱼),6 月 7 日下午收到二面通知,于 6 月 8 日晚上二面。

百度 - 百度网盘事业部面经

在群里认识一个网盘小伙伴,说正好网盘在扩招,叫我去试试,不得不说,百度的招聘系统虽然不是很 nice(经常被一些 hr 实习生乱推),但面试体验是非常好的,和面试官也聊得很来,点个赞!

一面 mentor 面

  1. 自我介绍

  2. 在学校自学了什么课程?数据结构讲几个?栈和队列的区别

  3. css 垂直居中

  4. flex 布局

  5. grid 布局

  6. 移动端布局,移动端适配

  7. 介绍下 ES6(自嗨了十几分钟,讲了weakMap weakSet,promise等等)

  8. promise 源码介绍,面试官很自豪的说其实我写过

  9. 学习方式,看什么书(balabala),红宝书好看吗,讲下感受

  10. 项目难题

  11. 文件断点续传思路

  12. node、koa 框架,开始撕业务

  13. 反问

一面聊的比较随心,面试官对我的项目比较感兴趣,也和我沟通了一些业务,面试体验挺好,更像技术交流而不是面试。

鱼皮:这轮面试就是典型的一面风格,侧重基础知识的考察,也会问一些业务场景问题,所以基础还是要打好。

二面 商务运营部长面

看了别的小伙伴的面经,以为二面偏业务,没想到被背刺了(哭哭)。

  1. 自我介绍

  2. 状态码 304怎么做 Cache-control有几个属性?

  3. tcp与udp区别

  4. tcp如何保证数据稳定?(讲了三次握手,滑动窗口,慢开始,拥塞控制,超时重传,快重传)

  5. cdn原理,cdn回源怎么做(一脸懵逼,因为cdn我司分给了运维层做)

  6. 扫码登录怎么做,手机端和PC端都要建立长连接吗?

  7. sso单点登录

  8. 小程序做过吗(大学时做过),和h5区别在哪里,为什么没有dom操作,js加载和页面同时进行吗?

  9. webpack 介绍下tree-shaking css-treeshaking plugin和loader区别,手写过plugin吗?

  10. 进程与线程区别,线程间通信方式

  11. 流的概念,node stream流

  12. 如何用node读取20g文件

  13. node和php的区别

  14. vue-if与v-show

  15. vue的模板渲染(源码)

  16. 父子组件的挂载

  17. 公司项目亮点(答了前端共享进程池)

  18. 何时能来上班?对新公司有什么期待?

  19. 反问环节

毫无疑问,这一仗被打的遍体鳞伤,虽然二面过了,但是一些原理性的东西面试官挖的很深,业务场景题也没少问,看来还是要好好读术~

三面 部门经理面

面试的时候环境很嘈杂,有几次没听清面试官讲了什么,当时家里网络也不是很稳定,但总归聊的还行,涉及一些开放性的论述题目,这个自由发挥,合理真实即可。

  1. 自我介绍

  2. 描述下你的优缺点

  3. 描述下你做过最难的项目思路

  4. 为什么想跳槽?

  5. 技术栈不同,有想过重构吗?难点在哪?

  6. 对自己的团队定位

  7. 遇到的业务沟通问题有什么解决方案

  8. 假如你要从百度离开,你想得到什么技能

  9. 职业规划

  10. 理想的新公司资源

  11. 如何形成自有体系的业务方法论

  12. 对百度网盘产品有什么使用建议?

  13. 对加班的看法

  14. 反问(部门架构,技术分享周期,带团队的方法)

和部门经理聊了会,发现部门经理是比较看重个人职业发展的,整个部门是偏技术交流多一点,技术氛围非常浓厚,用人也会如千里马,此刻我的心只想为百度跳动。

四面 hr 面

主要是了解一些个人资料、年薪待遇,以及去北京的意向等等,比较常规。

战果

6 月 7 日晚上,收到了百度 offer call,同期还有阿里在面所以 argue 了下薪资,大概率是去北京百度了(乡下人进城),小菜鸡的第一次社招之旅到此画上句号。分享好运,祝各位秋招顺利!


以上就是小黑同学的分享,双非非科班,自学半年找到前端 4399 公司工作,工作 1 年就得到了多家大厂的面试机会,并且顺利拿到百度 offer。这些经历看似行云流水,但从他的面经以及我和他后续的交流中,我发现小黑有很多优秀的特质,比如:

  • 有明确的目标和规划
  • 善于自主学习,懂得利用优秀资源
  • 懂得复盘总结
  • 努力,坚信勤能补拙
  • 有信念,工作之后依然持续学习
  • 懂得把握机会,在合适的时间迅速出击

虽然进大厂也讲究天时地利人和,但正如我所说的,运气也是实力的一部分,小黑同学正是通过努力才一步步走到风口浪尖,然后顺势而为、主动出击,才拿到了令人心动的 offer。瑞思拜!

最后再送大家一些 帮助我拿到大厂 offer 的学习资料

跑了,留下 6T 的资源!

欢迎阅读 我从 0 自学进入腾讯的编程学习、求职、考证、写书经历,不再迷茫!

我学计算机的四年,共勉!

我是鱼皮,觉得本文不错的话,希望朋友们能 点赞 支持下 ❤️

以上是关于双非同学,自学编程,毕业一年逆袭百度!的主要内容,如果未能解决你的问题,请参考以下文章

宁波大学宿管大爷逆袭成“程序猿”,自学编程开发宿管系统

双非本科,三年逆袭鹅厂!完整经验分享

小伙双非本科,跨专业转行,自学1年时间终于斩获阿里offer

28岁自学编程会不会太晚了?靠谱吗?

双非流本科毕业,自学软件测试也能成功进入阿里···

自学编程,毕业月薪1.8万,方法分享