本文首发在我的微信公众号“程序员柯南”,底部附有二维码。原文阅读

01终于步入大学

我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个2020届普通本科大学生。身为读者的你,关注了我,自然是想获取知识与经验,我所能分享的,也只有我的一些知识与经历。

2016年,我大一刚入学,边学着入门级的C语言,边对未来迷茫着。面试学生会,失败。面试新媒体部,失败。本以为连连失败的我已经输在了大学的起跑线上,意外让我面试了一个IT编程工作室,成功。我感谢工作室里带我入门的学长们,让我知道了C语言以后可以干什么,Java可以干什么,促使我迈入Java世界的大门。寒假两月,自学完Java基础语法。

02孤独的旅行者

2017年,放弃了喜爱的篮球,放弃了游戏,从jsp、servlet、html开始学习,搭建了一个自习室查询网页,并出售给了一个校公众号团队。

我在大一下学期报了校软件设计大赛,并设计开发了一个微教务系统,原理是模拟登陆校教务系统,爬取成绩课表等信息,然后进行网页展示。获得了推荐奖,也就是没进前十名。校软件大赛举办的作用是选拔团队去参加山东省大学生软件设计大赛,虽然是推荐奖,但只要完成了作品,还是可以报销三百报名费的。就这样,我拨通了我妈的手机号,给我妈要了三百块钱。

在官网报名时才发现一个问题,每个团队最低三个人。

可我的团队,只有我一个人。

是的,校赛现场答辩时,也只有我。

我最终还是参加了这个比赛,我庆幸我有两个月的暑假可以去准备。在这两个月里,我抱着一本Android入门到精通的书籍,开始一章一章的做Demo。最后,我做了一个校园App,主要包括论坛发帖、点赞、评论功能,以及查成绩、查课表、看校园新闻等功能。

我获得了齐鲁软件大赛作品完成奖,不是一、二、三等奖。所以,我的第一次软件大赛结果,失败。

2017年下半年,也就是大二上学期。我把我的这款校园App发给了校猿码工作室,成为工作室的一员。期间工作室计划了两个超级大项目,可惜最终都不了了之。

国庆假期期间,特别想换掉我那台1500块买的笔记本电脑,于是我去了济南方特兼职,每天早7晚10的的日子,赚了一千多块钱,加上花呗分期,买了我现在的这款电脑华硕K55VD,原款配置略低,我又加了内存条、固态硬盘。一共两千多吧。为啥这么便宜,因为是柜台展示机,其实和新电脑没啥区别。

在年底,我利用我学会的安卓开发技能开发了一款Vip视频破解App:聚视助手。这款软件至今还在维护,它是一款收费软件,软件可以免费观看爱奇艺、优酷、腾讯、乐视、PPTV、芒果的VIP视频。原理很简单,调用网上已有的破解接口,并嵌入腾讯X5浏览器内核。关于收费模块,貌似我那时候支付宝还不支持个人开发者,于是想到了卖卡平台。用户去第三方买卡,到我的软件输入卡密即可使用。不过推广不利,并没有赚多少钱。

03在反思中进步

转眼,2018到来。

我还是那个两眼不闻窗外事、一心只想敲代码的我。年后,接了个学校的项目,这时候正好我的技能栈已经扩充到Spring生态圈了,Spring Boot、Spring MVC用的贼溜。正好,基于Spring Boot仿实习僧做了个招聘系统,酬金税后2000。

技能栈越来越多,我开始思考更深层次的意义。

我的基础到低扎实不扎实,每次想到这,我好慌。

我的基础仿佛没有,我既没有研究过jdk源码,又没有搞过算法竞赛。我开始主动寻求Java中的基础,去寻找我经常听到却不会的。我问我的学长们,听学长们讲述面经。这时候,一系列我不知晓的名词涌来,让我仿佛觉得自己是个摇摇欲坠的大厦。

多线程,什么是多线程?什么是线程安全?我一点不懂。JVM?这是啥,GC又是是什么?BIO、NIO、AIO,抱歉,我不会。

我觉得我要开始改变了。内心仿佛总是有一股力量在揪着我,催着我,让我去做,去行动。我觉得,我不能再看视频学习了,慕课网已经不适合我了。我要去看书。

在我的印象中,我主动看的第一本书,是葛一鸣的《Java程序性能优化》。我非常感谢这本书,感动到想哭着给作者打赏。这本书完全打开了我对Java未知领域的大门,是它,让我知道Java基础中String的底层原理、List、Map的底层原理与优化,是它,让我知道了设计模式这种东西,是它,让我知道了GC、JVM,让我知道了Java世界中最重要的多线程相关知识,让我体验了Java性能调优。这本书中的内容,基础知识我看的懂,JVM、多线程等看不懂,但为我指引了方向。按着这个方向,我买了《深入理解Java虚拟机》《Java多线程编程核心技术》《Java并发编程的艺术》,我读的如饥似渴,书上的示例我都照着敲一遍,可我担心学得快忘得快,于是我开始记笔记,我把书上的内容都抄了下来,发布在了我的博客上。学完多线程相关的知识,我再回来过看葛一鸣的书,我懂了。

04再战软件大赛

2018暑假,非常热闹。

这次我的团队很给力,指导老师也很给力。我们一起开会讨论做比赛!没错,还是山东省大学生软件设计大赛。这次,我想全力以赴。

我们用了一个多月去寻找我们究竟要做什么?我的导师特别想做一个医生机器人,还给我们看了相关的图片。我们的课题是大数据分析与挖掘。起初,我们压根没有头绪,走了非常非常多的弯路,怎么说呢。我去学了Hadoop,学完后发现项目规模太小,用不上。然后去学了Elasticsearch。最初的作品是一个网页对话窗口,集成思必驰语音合成接口,后端是Elasticsearch做的查询接口。非常简单(low)。

了解到其它队伍大都是做了做数据爬取、分析,然后用ECharts做可视化展示,我的导师建议我做知识图谱,并提供了示例。于是,我去百度调研,用了一周的时间学习了Neo4j,并结合Spring Boot做了个Demo。只有图数据库的支持是不够的,还需要前端展示,于是学了d3.js。但我的前端技能并不是特别好,数据量太大,做出的知识图谱节点都挤在了一起,作品效果非常不好看。

那段时期,我又陷入了迷茫。我究竟要做什么?第一次参赛一败涂地,这一次,我还要继续失败吗?

导师告诉我,让我多试几个网站爬取数据源。无意中,我看到了jb39网站的自助诊断系统,瞬间惊呆了,这就是我要做的东西!

导师要做知识图谱,可我要坚持做智能医疗诊断系统。在思考系统的算法逻辑时,我惊奇的发现,支撑诊断算法的正是知识图谱。当我在办公室里的小黑板手写算法思路,向队友、导师展示的时候,我那时非常开心,因为我终于知道了我要做什么。

大二下学期开学后,我被通知作品进了二等奖,一等奖决赛即将在山东大学举办,让我务必准时参加决赛答辩。

答辩我准备的非常充分,而且,在决赛答辩之前,我就在另一个省级比赛中答辩过一次了,算是涨了一波经验。

不负所望,我的作品获得山东省大学生软件大赛一等奖。

05开源作品爆发

在做"基于智能医疗诊断系统"参加省软件大赛的同时,我深深感受到在爬取大量数据时的时间消耗是多么巨大。最长的时候,我的电脑两天没关机,一直在后台爬。最后,受不了的我,用Java写了一个多线程爬虫框架,并发布到了我的Github。

我以前都是一个人做项目,而且,越来越发现自己对页面相关的设计开发效率低下。现在有了团队,非常渴望前后端分离。当时,我一直在用模板引擎,基于服务拆分的思想,我做了一个类似Tomcat的静态web服务器发布到了我的Github。

在学完《深入理解Java虚拟机》后,我觉得我不应该学完就完了,我要把学的知识做成一个作品出来。当时学完了java性能监控的工具后,觉得软件形式的监控也比较麻烦,如果能有一个可视化的web版再结合ECharts图表展示就太方便了。我用了几天的时间做完了JavaMonitor项目的单机版,没想到后来star越来越多,吸取了一些建议,做了支持分布式监控的javaMonitorPlus。

也是在暑假这段时期,我收到了来自一位阿里技术专家的邮件。内容简单概括就是想不想来阿里。当时收到邮件的意义,对我来说非常巨大,他让我第一次感受到BAT与自己的距离似乎不是那么遥远,我一个普通本科仿佛也可以实现去BAT工作的梦想。

06人生的转折点

2018年12月,我迎来了我人生的第一个转折点。

当时,我已经感受到了技术仿佛到了一个瓶颈,单机架构我做的很溜,但涉及企业的分布式架构,我还是不太了解。当时恰好得知省赛颁奖典礼有现场招聘会时,我便精心准备了一份简历,并彩印了5份,打算投递。可到了现场,看到的都是小公司在招软件销售人员,我就瞬间奔溃了,我心底一直有一种骄傲,我可以去大公司的,我有这能力。最终,我一份简历没投。

看着写了好几页的简历,我是真的不想就这么白白浪费。

想起来我大一曾注册过的几家招聘网站,我就把我的简历发在了上面。其实只有一家,实习僧。

我以为压根没有我的岗位,因为我太小了,我才大二。可我打开实习僧,却发现竟然有2020届的实习生招聘,我有点惊讶。不过,也仅此而已,我不认为我有能力能进新浪、百度、京东这些大公司。我记得我当时抱着不浪费我写的这么多页的简历的心态,只投大公司,小公司不投。然后,洗洗睡了,压根没怎么放心上。

不久的一天早上,我还在睡觉,接听到了第一个电话,来自中国电信北研院,问我在京吗?什么时候有时间,约一下电话面试。然后,自己开心的不得了。又不久,京东打来了电话,让我去北京参加现场面试。我推到了我的期末考试结束后。又不久,新浪也发了现场面试的邮件。

一天晚上,我收到了百度打来的面试邀请电话,当时我在商业街买吃的。听到了开心的不得了,约定了一小时后电话面试。东西也不买了,直接回学校,看了一会书,复习复习,因为那时候我已经半个月没碰过代码了,《剑指Offer》才刷了几章就停下来一直在复习期末考试。庆幸自己买了本《Java程序员面试笔试宝典》。百度一面,如约而至。我记得我当时说的最多的就两句话:忘了,不了解。面完后,我觉得我挂了。但我的习惯还是让我把面试官问到的所有基础知识都看了一遍。就这样,我第二天接到了网易一面的电话,回答的算是very good,就一个SQL左连接查询我忘了,因为我忘了复习SQL了。

意外惊喜,接到了百度二面的面试邀约,我这次提前看了很多知识,复写了Java虚拟机,多线程相关的知识,二面这块的基础知识娓娓道来,但谁知,面试官问我Redis底层原理,如何设置过期时间,我说不会,面试官便引导我说:“不会没事,我提醒下你”,就这样,我回答出了这块的内容。又问我消息队列,我又懵逼了,问我,如何设计秒杀系统,我说可以用队列,队列满了就直接false。面试官又问,分布式系统呢?那当然用MQ中间件。说实话,面试后,我对百度拜服。不久,网易二面来了,回答也算是very good!

网易三面来的非常快,我觉得网易面试很舒服。不久,网易HR加了我微信,人生第一个offer正式到手!

百度三面迟迟不来,我以为我挂了,心想好吧,去网易也不错!杭州,舒服。可我觉得还有希望,便给百度打了电话,百度说,等段时间。不久,百度三面到来,三面主要是聊项目,聊的还不错,毕竟自己做的东西被人欣赏自己也很开心。没多久,百度HR直接给我打电话,说offer已发,让我当天就要确认。

晚上,问了很多老师学长,包括我的家人,都希望我去百度,最后,我去了杭州网易,因为,那里有阿里。

(未完待续,后面的内容依旧会在公众号第一时间发布)

文中的所有项目均在我的Github和Gitee仓库中

Github:https://github.com/yueshutong

Gitee:https://gitee.com/zyzpp/projects

个人博客:http://www.yueshutong.cn

邮箱:yster@foxmail.com

我一个二本大学是如何拿到百度、网易大厂offer的!的更多相关文章

  1. 我一个二本大学是如何校招拿到阿里offer的

    作者:薛勤,互联网从业者,编程爱好者. 本文首发自公众号:代码艺术(ID:onblog)未经许可,不可转载 01:终于步入大学 我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个普通本科大学生. ...

  2. 我一个二本大学是如何拿到阿里offer的

    作者:薛勤,互联网从业者,编程爱好者. 本文首发自公众号:代码艺术(ID:onblog)未经许可,不可转载 01:终于步入大学 我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个普通本科大学生. ...

  3. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  4. [LeetCode] Search a 2D Matrix II 搜索一个二维矩阵之二

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  5. [LeetCode] Search a 2D Matrix 搜索一个二维矩阵

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  6. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  7. [CareerCup] 11.6 Search a 2D Matrix 搜索一个二维矩阵

    11.6 Given an M x N matrix in which each row and each column is sorted in ascending order, write a m ...

  8. [CareerCup] 13.10 Allocate a 2D Array 分配一个二维数组

    13.10 Write a function in C called my2DAlloc which allocates a two-dimensional array. Minimize the n ...

  9. new一个二维数组

    .定义一个二维数组 char **array1 array1 = new char *[x]; for(i=0;i<x;++i) array1[i] = new char[y]; ...用的时候 ...

随机推荐

  1. Python-网络爬虫模块-requests模块之请求

    Python原生库urllib库不太方便使用,本着"人生苦短, 我用Python"的珍惜生命精神, 基于urllib, 开发了一个对人类来说, 更好使用的一个库——requests ...

  2. ASP.NET MVC权限控制思路

    在系统开发的时候一个老生常谈的权限管理问题,翻阅了很多的网络资料,但是总感觉离实际使用还有一段距离,其实权限控制无非就几个“请求.页面按钮.字段显示”, 对于前端权限就需要配合JS了, 这里主要展示我 ...

  3. SpringBoot简单打包部署(附工程)

    前言 本文主要介绍SpringBoot的一些打包事项和项目部署以及在其中遇到一些问题的解决方案. SpringBoot打包 在SpringBoot打包这块,我们就用之前的一个web项目来进行打包. 首 ...

  4. dubbo不完全指南

    Dubbo架构 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的 ...

  5. .NetCore采取JWT方式进行身份认证

    验证与授权 Authentication(身份认证) 认证是系统对请求的用户进行身份识别的过程. Authorization (授权) 授权是对认证通过后的用户进行权限分配的过程.授权简单理解就是:识 ...

  6. DSAPI 3张图片实现花开动画

    效果图 素材 代码 Dim B0, B1, B3 As Bitmap Private B As Bitmap = Nothing Private Sub Loading_Load(sender As ...

  7. .net core api +swagger(一个简单的入门demo 使用codefirst+mysql)

    前言: 自从.net core问世之后,就一直想了解.但是由于比较懒惰只是断断续续了解一点.近段时间工作不是太忙碌,所以偷闲写下自己学习过程.慢慢了解.net core 等这些基础方面学会之后再用.n ...

  8. 从零开始学安全(四十三)●Wireshark分析ICMP(IP)协议

    存活时间与IP分片 这里我们首先来研究一下关于IP协议的两个非常重要的概念:存活时间与IP分片.存活时间(TTL,Time to Live)用于定义数据包的生存周期,也就是在该数据包被丢弃之前,所能够 ...

  9. DevOps概述

    Devops概念 转载自 devops实践-开篇感想 DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和 ...

  10. java 线程池 ---- newCachedThreadPool()

    class MyThread implements Runnable{ private int index; public MyThread(int index){ this.index = inde ...