最近拿到了一些心仪的意向书,所以赶紧回来回馈牛油啦!
背景交代:
本科不是计算机专业,本科毕业后在工地打了两年工, 然后考上了末流985的软件硕士一枚,还是一位非全
初识计算机:
刚入学那会,还是一个计算机小白,啥也不会。由于是非全转专业,每次来到实验室看着各位大佬敲着代码调试项目,心里也是五味陈杂,暗叹:自己什么时候才能像他们一样。导师呢,也是希望我能先学好基础再来做项目,大概给了我半年的时间吧。
当然,光羡慕嫉妒是没有用的。于是便开始了自己的行动,在看了某乎、牛客各种论坛,加上一些老同学和学长的指点(非常感谢那两位),便有了初步的学习计划,那便是在研一上学期,看完 git、java核心卷1、spring基础、算法4,由于我们大学考的不是408,所以我还在上半年恶补了数据库mysql、计算机网络以及操作系统。当然,这里的恶补只是为了能够达到很普通的本科生的知识水平。这个过程说起来简单,但是配合研一的各种专业课程,真的是非常幸苦。(这里不得不说选修的大数据课,让我累死累活,但把linux的一些基本操作都给掌握了)。
在18年国庆时候,在朋友的推荐下,买了一道某J.com的教程结合学长送的一本《Java EE互联网轻量级框架整合开发》,按照教程一步步学习spring和mybatis,做了一个没有前后端分离的天猫商城软件。虽然这本书和这个网站都不建议大家去买,因为b站有很多很好的视频,但是的的确确是这两样我初步认识了web开发。
过年在家的时候,为了更多的了解TCP/IP,看完了一本入门级的《TCP/IP网络编程》,一个韩国人写的,很适合我这种小白兔。
收获实习:
研一12月份的时候,华为刚好来我们学校招聘寒假实习生。抱着试一试的心态,我就投了华为的软开岗位。
那一年华为实习问的真的是超级超级超级基础,基本上就只问了我git和java基础的东西,多线程和网络相关的答出来都少。但还是勉勉强强的拿到了这一份实习,算是迈出了很关键的一步。
在两个月的实习期间3-5月,华为对实习生的要求不算太高,基本上就是让我修改了代码规范,改一些可有可无的东西。在这个期间最大的收获其实就是一些命名规范和一些可读性强的写法,最重要的是熟练使用了GIT😂。
由于实习的时候空闲的时间很多,而且公司内也有很多相关的技术书籍。于是在那两个月,我把剑指offer刷了两遍,并看完了《高性能Mysql》前面八章和《深入理解JVM》,对隔离级别、索引以及垃圾回收有了初步的了解。期间还陆陆续续刷了50道leetcode。
就这样下来从一个大菜鸡,变成列一个不是那么菜的菜鸡了
第二份实习
在第一份实习结束后,导师便觉得我已经可以独立完成一些任务。便交给了我一个微信小程序的项目,让我独立负责完成,也正是这个小程序,让我收获了第二份实习。
小程序的开发中,会遇到各式各样的问题,比如如何获取用户uuid,小程序中要如何配置appid还有密钥才能够请求到微信那边的服务。开发过程中也会遇到各类并发的问题,spring mybatis的各类配置文件、数据库表设计,各实体类和业务类代码的编写。包括前端的js请求和html都是由我完成。虽然开始代码写的比较丑陋,但是一系列流程下来,我对整个网页开发流程,已经前后端分离,有了一定的认识。(开发过程中顺便看完了《Java多线程编程核心技术》)
于时我便拿着整个写了两个月的demo去展示给老板看,顺便把这个经历写到了简历里,于是顺利的通过了网易的日常实习面试。
这一份实习经历了5个月,对我帮助特别大,网易导师几乎是手把手的教学,无论是编程技巧、业务逻辑以及原理相关,都给了我很大的指导。实习过程中,接触到了jvm调优,redis和数据库的优化,业务逻辑编写,源码阅读,rpc框架dubbo和kafka的使用还有重构。可以说是在开发方面有了一次质的飞跃,非常感谢那位导师,可以说是送给了我一张秋招大厂面试门票。
当然实习的过程中,也刷了不少leetcode的题,在去年12月份大概到了150道左右,期间也了解了各式各类的组件,比如redis、docker、kafka以及zk。也算是收获颇丰
秋招准备:
时间来到了2020年1月份,这段时间主要忙着写老师的项目,学习了python,顺便把lc刷到了200道。
不得不说一下刷题这档子事,我是按顺序刷的(不建议),越刷越觉得这简直就是个无底洞,根本刷不完。所以我改变了策略,那就是把leetcode 200道和剑指offer刷的炉火纯青,就跟当年刷数学考研全书一样。
所以到了4月份,基本上这些题,你只要说个名字,我就能秒A。如果面试超过了这个范围,就各凭本事了。
在1月到3月份,我基本上刷题为主,然后写下论文,最重要的是扩展自己的知识边界,例如rpc、redis和kafka的原理,自己都有看书深入了解,特别是读完了《redis设计与原理》感触颇深,也有一本不错的linux书籍《Linux命令行与shell脚本编程大全》。(期间也由于导师的论文,看了一些机器学习相关的书,感觉耽误了比较多的时间)
时间来到5月份,导师项目算是可以告一段落。于是便开始了秋招的复习,
复习主要分为:1.算法 2. 计网 3. 数据库 4. java语言基础 5. 操作系统 6. 并发 7. 组件 8. 框架
1. 算法没什么好说,那就是疯狂刷题,顺便刷了一下经典的题目,但又没出现在lc200和剑指offer的题,并且每天一道,保持手感
2. 计网,主要是看IP层以上的,感觉都是些八股文,背一下就好了
3. 数据库,由于之前又高性能mysq的学习笔记,再加上牛客网上的面经,差不多了
4. java没啥好说的,难得就jvm和juc,老八股了,github上很多学习资料
5. 操作系统,这个可以算是我的弱项了,看了很多面经和github得学习资料,都感觉是泛泛而谈,于是再某乎得推荐下看了《Operating Systems - Three Easy Pieces》第一部分虚拟化,感觉收获颇深。但面试基本没怎么问os
6. 并发:这个我基本上看书,加一些github得学习资料,就是那啥java很多star得项目
7. 组件这个还是得结合自己得开发经历来谈,这个场景问题问的比较多,不过感觉redis一般都是开发必问了
8. spring mybatis框架,除非是用java得公司,不然很少问,所以我建议不用花太多时间
正式秋招:
1. 然后字节的提前批马上就到来了,在充分的准备后终于拿到了意向书,以下是当时的面经:
2. 阿里巴巴,dream company,投了两次,把我给挂了,面试基本上问的项目比较多,而且问题都答出来了,题也写出来了,感觉阿里秋招还是hc太少,把我给感谢信了。
个人认为阿里比较注重项目和源码,面经的话我不太记得了,不过可以说说当时的手撕笔试题:就是lc的股票问题
3. 虾皮新加坡oc,这个公司是我面的最好的😂,比较喜欢问基础知识,计网、java多线程、redis和数据库sql索引,隔离级别,反正就会问的基础,深挖,最少会问你45分钟基础,然后手撕几道算法题,手撕的题目主要是:topk问题,lru,二叉树每一层连接起来,然后如何优化。
4. 腾讯csig云证,目前还没有oc,面试官不怎么问java的,都问些网络、redis以及算法知识,问的很简单。主管面的话手撕了一道2进制转多进制的题,比较简单,然后是介绍了一下项目就hr面了。。
5. 华为消费者bg主管面通过,华为现在一二面基本上就是写题,问了下快排和归并的原理。然后手撕了几道题,数组数字凑成最大,硬币找零最少个数。反而主管面疯狂问我java的jvm知识,,,。不过还好通过了
最后我希望我的经历也能给一些转行的小白和非全日制一点自信和参考,也希望各位牛油能拿到合适的offer。
努力的人,最终会获得回报,希望大家不要气馁,坚持走下去!努力的人以后肯定会越来越好~ 至少我是这么相信着的~
全部评论
(19) 回帖