双非菜鸡回馈牛客

前言

首先写这篇文章的目的是回馈牛客,非常感谢这个平台为我们广大学子提供一个学习、交流以及求职的机会。本文对我从去年秋招到今年春招的一些经验和情况作总结。所谓知己知彼方能百战不竭,我先对个人情况进行介绍。

我的学校虽然不是985,211但是计算机专业挺好,评级为B+,在江浙沪口碑还算不错。我本硕均为计算机专业,算是科班出身,虽然不是尖子生,但是水平也还说的过去。我本硕期间均没有实习经历;项目方面参加过军工项目,自己平时也鼓捣一些小项目。去年这个时候对自己的情况评估了一下,感觉竞争力不太强,所以重心放在了基础的复习与强化。下面给出目前战绩(还有一些混在邮件里懒得找了)。



下面从基础准备、算法、软技能、项目、个人建议以及资料汇总等方面进行详细叙述。

基础准备


这块本来想放面经的,但是我还是觉得放面经没啥意思,拿别人的经验死记硬背虽然可以获得Offer,但是知识并没有过脑子导致回头就忘,这种方法其实有些过于投机,也不希望大家这么干。其实一开始我的确找了很多面经,经过总结和归纳后得到了一个自己的题库,但是也发现这个题库不够完善,所以经过了海量面试后这个题库也得到了不断补充,最终以博客的形式记录了我近一年的Java学习经历。博客地址如下,欢迎交流技术。


还要声明一下,我这总结的内容,大部分来自GitHub上CS-Note和JavaGuide提炼精华以及无数CSDN博主的总结,向这些大佬们致敬。其他部分是我从一些相关书籍上整理得到。下面给出基础知识大致的分类:
- 数据结构
- 计算机网络
- 操作系统
- Java基础
- Java集合类
- JVM及其调优
- 多线程以及并发
- Java-I/O
- Spring及其Web开发
- 数据库
- 消息队列MQ
- Redis
- Nginx
- 其他中间件
- Linux操作系统及其常见指令

对知识分类总结并逐个击破是我学习的方法。在了解这些分类后,下面就是如何去填补这些知识空白。快速填补方法就是参考`GitHub`上`CS-Note`和`JavaGuide`的总结,建立基本的知识架构,随后通过看书加深并获取他们没有总结的东西。这里推荐一下我认为应该看的书,注意必须看不等于全书都要看,要挑重点章节有侧重点地反复看。以深入理解Java虚拟机为例,第一章看看就行,第二三七八章必须反复看,第四章偏实践建议多操作,第六章只需要仔细了解`Class`文件的基本结构即可,字节码指令可以简单涉猎或不看。第十二十三章做基本了解即可。下面给出一些书单供大家参考:
- Java多线程核心技术(技术类)
- Java并发编程的艺术(技术类)
- 深入理解Java虚拟机第二版(技术类)
- Redis设计与实现(技术类)
- RocketMQ技术内幕(技术类)
- Java核心技术卷1/2(技术类)
- 高性能MySQL(技术类)
- 数据结构严蔚敏版(基础类)
- 计算机网络、操作系统的王道408系列(基础类)
- `CyC2018`的`CS-Note`与 `JavaGuide`(GayHub上面试相关得总结)

其实,弄懂Java基础只需要了解一个看似很简单却又不简单的问题,你确定你真的能讲明白下面这段代码么?反正我到现在也没有自信能完全讲清楚这段代码执行的全部细节。等你把上面跟Java相关的知识点和书都看完了,再来自己捋一遍这段代码到底做了什么?
public class Main {

    public static final boolean FLAG = true;
    public static final byte BYTE = 123;
    public static final char X = 'X';
    public static final short SHORT = 12345;
    public static final int INT = 123456789;
    public static final long LONG = 12345678901L;
    public static final float PI = 3.14f;
    public static final double E = 2.71832;
    private int age;
    private String name;

    public Main() {}

    public Main(int age, String name) {
        this.age = age;
        this.name = name;
    }

    protected int add(int input) {
        int output = input+1;
        return output;
    }

    public static boolean compare(int a, int b) {
        return a > b;
    }

    public static void main(String[] args) throws RuntimeException {
        System.out.println("Hello World!");
    }

}

算法

算法注重积累,除非你天赋异禀,否则很难速成,尤其是跨专业的同学。我上大一才有自己的电脑,第一次C语言上机,肯定要`Hello World`嘛,结果在打印`double`的值时,我一直无法正确输出结果,后来班里有个搞ACM的大佬告诉我,我把`%lf`打成了`%1f`,不知道有没有跟我干过一样蠢事儿的人。我们学校ACM还是小有名气的,所以学院挺注重这方面培养的。我们很多人都选修过老刘的ACM入门课,所以对算法也算有点基本了解,不过上老刘的课更好听的集训队的故事。后来,有一些课程也引导学生去看算法导论这种充满力量的书,看了部分章节后实力稍微涨了一丢丢。自己平时也会刷刷题,LeetCode(300+题)和LineCode(100+题)都有账号,周末有周赛也会偶尔比划下,虽然都是签到水平。算法题平时基本靠LeetCode积累,面试前需要精读剑指Offer,而且要做到滚瓜烂熟,懂我意思吧。对于绝大多数面试中涉及的手撕代码,90%不会逃出剑指Offer+LeetCode热题精选。甚至,你可以通过面试官出的题反推其水平。 最近发现牛客上有算法视频课,左神大名也有所耳闻。看了下相关课程内容觉得比较适合正在求职的同学用它来构建解题思路以及查漏补缺(https://www.nowcoder.com/courses/cover/live/350?coupon=AmPd42S)当时买还是全价买的,现在好像可以优惠140元,有需要的同学可以试试,几百块换一个20w-40w的Offer,你懂得。

[Java算法系列](https://github.com/zx950519/zx950519.github.io/tree/master/_posts)
大致分类如下:
- 字符串
- 位运算
- 背包问题
- 树
- 贪心动归
- 链表
- 深广搜
- 数学
- 数组
- 二分

个人觉得,面试官在面试时偏向出数组、链表、数学、二分这类题目,因为输入简单,而且答案固定。反倒是动归,我基本没遇到过,撑死就是迭代题。下面给出一些其他人总结的高频题,其中部分是我自己额外加的,字丑见谅:





有部分大厂,喜欢对一个简单问题,展开夺命连环式追问,下面给出几个剑指Offer上的案例供大家分析:
- 面试题3:数组中重复出现的数字
- 面试题39:数组中出现次数超过一半的数字。这题是阿里碰到的,变型题有找两个数字,出现次数均超过1/3;找n个数字,出现次数均超过1/n+1
- 面试题53:在排序数组中查找数字,参考Java算法系列中的二分查找
- 面试题56:数组中数字出现的次数,参考Java算法系列中的位运算

希望大家做算法题还是要多动脑多思考,尽量少靠背诵!

这里在额外说一下笔试中的代码题,有很多公司出的题很难,甚至是ACM水平的题。如果做不出来,或者样例过的很少也不要怕,玄学等通知。我去年做完京东的笔试感觉没法和东哥做兄弟了,结果不还是跑了两趟上海拿下。一般笔试中的代码题可以跳出,一定要养成保留题目和代码的习惯,笔试后多反思复盘。


软技能

这里提一下这个点,很多时候沟通和交流能力也很重要。即使埋头苦干且业绩突出也不一定会得到领导的青睐,虽然我很不愿意承认这一点,但是社会就是这样。面试的时候不仅仅考察你的业务能力,也会对你的沟通交流能力进行考察。此外,像PPT这种技能也是必不可少的,毕竟是世界上最好的语言嘛。最后抗压能力是必不可少的,并不是每一个面试官都是正常人,就算觉得不爽也得忍着,遇到下面常见情况请不要发飙:
- hr阴阳怪气,好像你欠她钱一样
- 技术官无缘无故地朝你冷笑
- 技术官不开摄像头
- 技术官经常怼你,态度很差
- 技术官拿他们实际遇到的问题考你让你想解决方案

这里我就要提一个事儿,有家公司临时通知现场签约,不带三方不跟你谈部门分配、薪资以及福利待遇。我反正当场拍桌子就走了,也不想在学校惹事。总之在面试中做到一个词,不卑不亢!

项目

个人没啥拿得出手的项目,就做了一个秒杀。不过在这个秒杀的基础上,又看了不少分布式系统架构、中间件的书籍扩展知识面。然而,在面试中基本没有表现这些知识的机会。绝大多数时候面试官都比较愿意了解你秒杀的流程以及你的系统架构设计。还有一些时候会感受到面试官的恶意与鄙视。所以我建议大家不要再去弄什么秒杀啊、在线商城或者什么仿饿了么这些比较low的项目了,面试官估计也听腻了。硬要建议的话,找点高级网课,比如MIT的操作系统,跟着做一遍能让绝大多数面试官觉得你是真的nb以及谦虚好学;Java方向的可以去GitHub上找找一些人实现的Raft代码,把这个项目fork后全搞懂也挺好的。总之,一定不要再去做别人都做的东西,即使你能搞出点花花样,大概率你是展现不出来的。



建议

这块其实不多说学习相关的事儿,重点谈谈选择和心态。

知己知彼方能百战不竭

首先是知己,你要掌握自己的情况啊。基础会多少,算法刷了多少题,有啥项目,参加过啥比赛。对自己的强势点和弱势点要有清晰的认识。

其次是知彼。这里分为竞争对手和招聘方。举例来说,如果你是搞CV的,你应该先去了解都是哪种神仙再跟你对线,顶会,实习你都有么?招聘方会有多少hc,这其中又有多少hc是实习转正的?明知CV要白给,趁早转开发不香么?对于方向的选择,我个人感受是DL和ML神仙打架,NLP相对宽松点;后端需求最多,且竞争对手最多,上岸难度适中;前端和客户端比较好上岸;大数据不太了解。这里也不想争论前端和后端哪个更好,留给大家自行思考。推荐大家询问下不同层次的人,985,211,双非,统计大家的倾向、选择理由以及Offer情况,你会得出结论的。谈完了竞争对手,再来看看招聘方。有条件的同学可以通过熟人内部打听下Leader挑简历的几个指标。就我的感受来看,大厂越来越倾向名校、实习转正和有大厂经验的同学,为什么?首先是名校毕业的同学,这些大佬的学习能力毋庸置疑,这里不多解释了;其次,大厂招人自然希望招那种来了就干活的人,而不是培养你最后让你跑了,尽可能地压低成本以换取最大收益。对于实习转正的同学,在部门干了几个月,是骡子是马心里肯定有数;其他大厂的实习经验对面试官或bp简历的人来说,也相当于得到了一定认可。那么应对之道就有了,实习被。那肯定也有一些同学,没办法实习啊。破局之道就是搞基础,把目标适当降低,不要盯着头部那几块本不属于你的肥肉。这里不是让你彻底放弃,而是有计划地尝试,失败后要尽快释然,不要给自己太大负担。

行百里者半九十


大家要有个认识,大佬们往往在提前批一个人能拿10几个20几个Offer。但是他们只能挑一个,所以后期肯定会有hc空出来。我去年也是9月份才开始收到Offer,以一些中小厂起手,陆续拿了几个大的,甚至今年春招也还能拿一些好的Offer。不要因为7月8月的失利而丧气,坚持到最后你会得到满意的结果。不妨告诉大家,我所有大厂Offer都是10月份以后下来的,虽然感觉是捡了别人不要的剩菜,但是心态摆正以后就没事儿,反正公司都给你机会了,还要啥自行车。再送给大家一句名言:

我们遇到什么困难,都不要害怕,微笑着面对他,消除恐惧的最好方法就是面对它,坚持才是胜利!加油!奥利给!




不积跬步无以至千里

知识都是一点一滴积累起来的,Offer同样也是海投后一次一次跑面试换来的。

学无止境

摆正心态,把面试当成对自己知识体系的差缺补漏,这样路才能走的远。

本条没有谚语

面试是有技巧的,能否引导面试官进入你的节奏就看你的造化修为了。面试最好的状态是双方互有输出,面试不是问答,而是双方的一次技术交流,面试者在面试后无论结果如何都能有所收获才是双赢。然而,这种面试我并没在头部大厂见到,很遗憾。个人觉得整个秋招体验最好的是华为的面试,听说他们是通过考试选拔的面试官,看起来效果还不错。还有一些愿意主动发掘面试者亮点的面试官也很nice。

本条也没有谚语

脉脉是个好东西,虽然负面情绪很大,但是也能反映出一些社会现象。牛客里大部分都是学生,社会经验不足一定要吃亏,多一个了解信息的渠道不是坏事儿。

资料汇总

我自己有一个GitPage当博客(后续考虑迁移到牛客博客),自己也有GayHub仓库,地址如下:
- GitPage:https://zx950519.github.io
- GayHub:https://github.com/zx950519
- 牛客:https://blog.nowcoder.net/alitria

私货


送大家两段我最喜欢的话。

故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。

世有伯乐,然后有千里马。千里马常有,而伯乐不常有。



PS

如果大家觉得我上面总结的有啥遗漏,或你有啥想问的,欢迎评论区提出。我希望这个帖子能帮助更多跟我一样硬件条件有缺陷的同学,希望将来大家都能大厂做兄弟!!!

广告


猿辅导2021校招内推

![图片说明](https://uploadfiles.nowcoder.com/images/20200713/1403129_1594616469237_7B7A3903315A57D84F265AF6403E6791 "图片标题")   

qq交流群:1132428965

由于疫情原因,对公司业务利好,对同学们来说是一次大好机会。算法、后端、前端以及客户端均有大量HC,欢迎大家踊跃投递。**投递方式见下面内推板块**。由于本人目前尚未入职,故暂时无法提供有效链接。为了给大家内推预热,欢迎大家可以先往我邮箱里投递(726710192@qq.com)简历,**我会大致看看大家的简历是否有明显的纰漏并会给你及时的反馈(拉你进相关qq群,可交流技术与面试经验)**。投递邮件时有几点需要注意:
- 务必写明邮件主题,demo:2021猿辅导内推申请;
- 正文写明你是谁,你发邮件的目的;
- 附件务必添加你的简历。

业务方面
猿辅导是国内领先的K-12在线教育公司,目前公司估值超过70亿美元。公司旗下拥有“猿辅导”、“猿题库”、“小猿搜题”等多款在线教育APP应用,提供包括自适应题库、拍照搜题、在线辅导在内的众多在线教育功能和产品,服务全国4亿用户。  

工作强度
上班时间一般为10-7-5,较业界其他公司轻松许多,上下班不打卡,具体工作时间视工作进度而定,公司不提倡加班。

培养机制
内部技术分享较多,有大牛mentor带,身边同事均来自于国内头部高校。正式投入工作前会组织专门的培训(新牛计划,以一个月的时间给校招生进行系统培训),方便大家平稳地从实习或学校的状态过渡到工作状态。

最近在预习公司培训需要准备的一些知识,涉及到数据库、缓存、分布式、一致性、代码规范、测试等方面的内容。上完理论课后会组织大家一起做一个APP,体验开发的全过程,可以说在正式投产前会得到十分全面的培训。

福利待遇
- 社会保障:按国家规定,足额缴纳基本医疗保险、养老保险、失业保险、工伤保险、生育保险和住房公积金;
- 商业保险:一般意外伤害险保额20万,补充医疗保额2万(0免赔,100%赔付);
- 团队活动基金:每月可享受120 元/人的团队活动基金;
- 年度旅游基金:每年可享受7000 元/人的旅游基金(我师兄他们去年好像去了一个国外的海岛玩,当时真的羡慕死了);
- 打车报销:21点后下班报销打车费;
- 健康体检:每年秋季免费参加健康体检;
- 带薪年假:每年7个工作日的带薪年假,第三个自然年起,每年增加年假1天;
- 带薪病假:每月可享受1天带薪病假;
- 固定休假:每年五一期间享受9天带薪假期,具体日期参见当年通知;
- 免费健身:***公司签约的健身房;
- 餐费补贴:在您任职期间,每月享有800元餐费补贴,按实际工作天数发放

公司所在地
北京市朝阳区望京SOHO附近(首开广场,利星行)

内推岗位
- 前端开发工程师
- 客户端开发工程师
- 服务器端开发工程师
- 深度学习算法工程师(语音、图像、NLP)
- 数据开发工程师
- 大数据开发工程师

要求2020年9月~2021年9月期间毕业的海内外知名院校本科及以上毕业生,计算机、软件工程等相关专业优先。

内推通道
![图片说明](https://uploadfiles.nowcoder.com/images/20200709/1403129_1594299589265_8A641397713A4065E16B5F32DC3B8C6C "图片标题")   

如果上面图挂了,请移步下面传送门进行自助投递呦(moka那个接口挺给力的!)。
传送门:https://blog.nowcoder.net/n/a41e8ad942e044ca848b4bac6643cdb6

#Java工程师##面经##校招#
全部评论
看到双非,然后看到了杭电
5 回复 分享
发布于 2020-04-08 20:44
&这就是传说中offer收割机吗
2 回复 分享
发布于 2020-04-08 21:00
终于等到你
1 回复 分享
发布于 2020-04-08 20:31
lz 太强啦
1 回复 分享
发布于 2020-04-09 09:34
&膜大佬~奥力给
1 回复 分享
发布于 2020-04-09 12:06
大一的时候1f和lf也把我坑了,教材上的代码是courier new字体,我真的醉了
1 回复 分享
发布于 2020-04-11 18:45
大佬真牛逼
2 回复 分享
发布于 2020-08-13 21:47
&太强了 楼主offer收割机呀
点赞 回复 分享
发布于 2020-04-08 21:51
大佬选哪家了?
点赞 回复 分享
发布于 2020-04-08 22:01
终于等到你
点赞 回复 分享
发布于 2020-04-08 22:05
tql,offer收割机
点赞 回复 分享
发布于 2020-04-08 22:20
点赞 回复 分享
发布于 2020-04-08 22:58
&太厉害了吧
点赞 回复 分享
发布于 2020-04-08 23:08
太强了吧!c++方面的楼主可以讲一下吗
点赞 回复 分享
发布于 2020-04-08 23:15
不愧是我大哥
点赞 回复 分享
发布于 2020-04-08 23:38
&tql
点赞 回复 分享
发布于 2020-04-08 23:53
tql  吸吸
点赞 回复 分享
发布于 2020-04-08 23:53
&tql
点赞 回复 分享
发布于 2020-04-09 00:01
&tql 
点赞 回复 分享
发布于 2020-04-09 00:03
&项目是真的难找啊
点赞 回复 分享
发布于 2020-04-09 00:12

相关推荐

1 tcp挥手是四次,握手为啥是三次不是四次(以为问错了,去回答为啥两次建立不起来连接,再次提醒后才讲了下流程,回答有点乱)2 juc是什么,讲一下3 bean的生命周期4 追问有了解过bean销毁的方法吗5 @GetMapping和@PostMapping的区别    get请求参数能用@RequestBody接收吗 一下子有点懵,回答不能6 mysql的锁(全局,表级锁,行级锁-------然后深入吟唱八股)7 分布式事务的解决方案(回答了Seata和MQ)8 TCC了解吗   完全不会,再也不写了解Cloud了针对实习和项目我的自己的项目是一个12306项目(甲蛙)1 使用布隆过滤器器的参数问题(只记得大概怎么使用,细节记不清了 )2 使用Redis思考过优化什么的吗 (回答请求参数涉及的多可能导致key太长,内存利用率不高,考虑对key压缩...)3 实习里Eureka优化的问题 回答了一二级缓存以及本地列表推送的问题4 实习里多线程优化Excel导出  回答了数据量大超时,oom的产生原因  回答了解决方案反问流程共二面建议多了解一些细节,还有项目别写12306,面试官还以为12306是我写的面试官很好,照着简历上问的,不会的也不会为难人,会给出一些建议。自己有点菜,回答的确实不好,语言组织有点差。最后祝大家都能找到好的工作。
查看13道真题和解析
点赞 评论 收藏
分享
11-19 16:38
武汉大学 Java
点赞 评论 收藏
分享
187 848 评论
分享
牛客网
牛客企业服务