Java 程序员面试需要准备的一些东西
关于学到什么水平能拿到令自己的满意的 offer 这个问题,已经跟不少同学聊过了,今天又有一位同学问我这个问题,我便索性写篇文章来好好讲一讲。
有一说一,这两年校招薪资涨得确实离谱,对应届生来说可以说是东风到了,对于即将到来的 2021 年秋招,大学生们尽早做好准备吧,能提前批就提前批,能秋招就秋招,别等到明年春招了,说句不太好听的,那啥都吃不上热乎的。
现在的校招薪资水平在我刚进学校那会压根想都不敢想,觉得毕业能有个 1W 就已经很不错了,真是时也,命也!
所以这篇文章的主题就是跟大伙唠唠什么水平的程序员才能拿到顺利拿到 20K。
算法
校招技术岗:不论前端、后端、客户端,首要的便是算法。
人们容易把自己不懂的东西的难度放大,天天吹捧一些难度很大,性价比很低的神书。
比如说算法导论,天知道我一开始啃里面的主定理的时候有多懵逼(当然掌握主定理对分析复杂度是有帮助的),但是其实完全没必要。
1.那么算法到底要掌握到什么程度?
想通过笔试: leetcode,越多越好,200 题起步,上不封顶;
想通过面试:剑指 offer、leetcode100、牛客上看面经,分析高频题;
稍微动点脑子刷,甚至不需要刷那么多,其实我暑期实习收割 offer 的时候,题量也才六七十。
这里分享下我当时刷题的时候遇到的一本很优质的 Leetcode 算法笔记,对于算法薄弱或者需要提高的同学都有帮助,
显然通过面试的算法难题比通过笔试小很多,因此抓住提前批的机会很重要,我基本都是提前批结束战斗,大家还在面试,我已经出去玩了。
面试算法来来去去就那几道:
链表:链表反转、k 个—组反转,链表找环等;
二叉树:各种顺序的非递归遍历、求深度高度、二叉树复制等;
想起之前也梳理过这块的面试题
以及一些学习算法与数据结构的电子书
需要白嫖的同学可以直接点击传送门
计算机网络
算法是进入大厂的第一道坎,但由于现在的同学越来越卷,有些同学走入了一些误区,以为算法题刷得越多越好,反而遗漏了更重要的基础知识。
第一层:计网八股文都背不熟;
第二层:熟是熟了,但有些根本就是错的,比如 TCP 第三次握手失败了,网上基本是重试+RST 的说法:
第三层:原理基本都找到了优质的文章学习,没有大的问题,但缺少实践;
第四层:看一手资料(比如 RFC793),抓包实践(wireshark +自己写 socket 程序模拟)
第五层:实际工作中运用原理进行问题排查;
更深的就不用说了,达到第四层,基本计网这块的内容,面试时都能让面试官眼前一亮。成为通过面试的—大重要因素。
关于计算机网络这块的常问面试题整理如下:
怎么领取我已经说过了,不记得的同学可以往前翻翻
数据库
一般校招面试讲到的数据库就是 MySQL +Redis,前两层跟计网差不多。
第一层:数据库八股文都背不熟;
第二层:有些内容根本就是错的,学得如大海上的浮萍:
第三层:知识理解正确,掌握基本原理,能实现常用的 SQL;
第四层:结合经典书籍+实践,比如隔离级别,有些人隔离级别说的头头是道,但实际上连用什么命令来看 MySQL 的隔离级别都不知道,简直离谱。
第五层:自己尝试复现—个具有基本框架内容的数据库;
同样的,达到第四层,基本碾压众人了,基本各个模块的知识点达到第三层,有一个进第四层,拿个大厂 offer 都不难。如果各个部分都能达到第四层,知识广度也 OK,比如 RPC 原理,分布式原理(例如 raft/paxos 算法等),拿多个大厂的 SP 也很轻松,可以冲击 SSP。
操作系统其实也跟数据库差不多,当然相比之下操作系统更抽象一些。
语言基础
很多刚入坑的大学生往往不重视基础这块,疯狂的去学什么热门框架撸什么牛 X 项目,本末倒置了属于是,对应届生来讲基础才是最加分的一块,因为这代表着你在面试官眼里有没有培养价值。
这里就拿 Java 当例子了,各个语言其实都差不多,语言才是工具,互联网的核心永远是业务,最起码中国互联网环境是这样的。
那 Java 基础有哪些呢
语言语法
面向对象
JavaSE 进阶
一定的前端知识
熟练使用常用开发工具
SSM 框架
等等...
应届生掌握以上这些就不错了,至于什么分布式、微服务、多线程之类的,你一个刚入行的菜鸟应该是接触不到并发量这么高的项目的,入职后再慢慢学吧。
项目经验
关于项目经验这块说不重要也重要,说重要吧也没有网上说的那么玄乎,首先,有完整的项目经验肯定是很加分的一项,这毋庸置疑。
但也不是没有项目经验就入不了职了,当然了,这说的是应届生,如果你是一个准备跳槽的老鸟,那还是在简历上至少准备一个拿得出手的项目吧。
如果没有项目写我这里收藏了一些 GitHub 上不错的项目,我分成了 springboot 和 springcloud 两类,如果你是菜鸟可以先写写基于 springboot 的项目
如果你是跳槽的老鸟,那就看看这几个 springcloud 微服务项目
源码地址这里都贴不了,还好我都给你们整理好了,点击传送门光速白嫖,瑞斯拜特!
怎么看书
我知道肯定又有同学问我到底要看啥,要怎么学才能达到我上面说的程度。怎么看书这块太大了,一两句话说不清,君不见樊登靠读书就赚得盆满钵满吗。这里只提一下,有人想看的话可以在评论区打上想看两个人,人多的话下篇文章再来详细展开讲讲。
我思考了下,这需要更仔细的介绍,一时半会讲出来的,可能就是给你提供个路径,意义不算很大,
比如说操作系统,很多人可能会给你推 CSAPP 或者《现代操作系统》,然后呢?
你去看这两本书,发现看得有点头大,看不下去,放着吃灰,然后就没有然后了。
你对操作系统的构成、进程间通信,互斥同步、虚拟内存等还没有概念的时候,直接啃这些书,其实不太合适。
事实上,不是不行,而是大部分人读书方法有问题,按正确的读书方法可以读。
最主要的,你到底有没有自己的思考,是不是一直人云亦云,很多大 V 推荐的《如何阅读一本书》,我高中就看过,翻译得一踏糊涂,真不适合国人看,尽管里面有些思想挺不错的(比如主题阅读法),但我们得意识到这玩意是外国人写的,人家说的是如何阅读外国书,真的不一样。
我不觉得自己的读书方法就如何如何厉害与正确,但起码经过自己的思考,我自己从小就爱看书,哪怕到了高二,印象深刻,那年还是挤时间看了一百本实体书。(当然那会看的都是散文集、诗词集、小说偏多,高三就没时间看了)
大多数人看书的一个毛病就是一行行,一个字一个字的看,为啥有这毛病,其实也是国内很多教材害的。正确的读书方法需要根据不同类型的书籍、不同语种的作者来因地制宜。
好了,就先写到这里吧,相信看这篇文章的朋友要么是最近有面试要么是有打算跳槽,所以最后我再把我上岸的 Java 八股文分享给大伙,
同样的,传送门在这里,给我点!
看到这里了都不点个赞?这合理吗?这不合理啊![狗头]
版权声明: 本文为 InfoQ 作者【北游学Java】的原创文章。
原文链接:【http://xie.infoq.cn/article/15b65a910bfea698713ab5c22】。文章转载请联系作者。
评论