程序员校招面试干货 | 非科班小白如何拿下互联网大厂Offer(附校招学习路线和学习资料)
现在正是准备校招的黄金时间,今天想跟大家聊一下,校招准备的学习路线及侧重点。
很多同学在准备校招阶段感到迷茫,不知道从何处下手,绕了许多弯路,结果浪费很多宝贵时间。作为大厂程序员和校招面试官,分享一下当年自己如何从跨专业、零基础的天崩开局小白,到收割10+互联网大厂offer的经历。
无论前端还是后端岗位,包括后端各类编程语言。在面试准备基本就分成三个部分,分别是八股、算法和项目。
八股部分
Java基础:面向对象(封装,继承,多态),集合(ArrayList,HashMap,ConcurrentHashMap源码),并发(线程,线程池,锁,条件变量,ThreadLocal)
Java虚拟机:内存分区,回收机制,类加载机制(双亲委派)
MySQL:CRUD语法(LeetCode Sql热门50题),索引,锁,事务,MVCC
Redis:数据类型(string,set,list,hash,zset,bitmap)以及使用场景,持久化机制,过期机制,数据一致性问题
开发框架:Spring、SpringBoot、Mybatis、Netty
消息队列:关键概念(生产者,消费者,主题,分区),使用场景(削峰,异步,重试),死信队列,使用过程中可能遇到的异常问题(消息堆积、消息丢失等)
计算机网络:分层协议,tcp(三次握手,四次挥手),udp,http,https,流量控制,拥塞控制
操作系统:cpu管理(进程,线程,进程调度,通信,锁,中断机制),内存管理(虚拟地址,物理地址,分页,分段,虚拟内存,页面置换)磁盘管理
八股文内容实在太多,很难在一篇文章中全部列举出来。给大家推荐两个背八股文的好用网站:
JavaGuide:
https://javaguide.cn/home.html
小林Coding:
https://xiaolincoding.com/
算法部分
面对海量算法题库,明智的做法是有针对性地进行刷题。聚焦于面试中频繁考察的重点内容,针对不同类别的算法题目进行有针对性的训练。刷算法题之前,需要先对常见数据结构(数组、链表、队列、栈等)和算法(递归、动态规划、二分查找)有初步的了解。如果是完全的算法小白同学,并且准备时间充足,可以先看《算法第四版》(文章末尾附PDF资源)快速学习。算法题按类型主要以下几种:
- 数组
- 链表
- 哈希表
- 位运算
- 字符串
- 栈与队列
- 树
- 深度搜索和广度搜索
- 回溯
- 贪心
- DP动态规划
- 图
- 高级数据结构(布隆过滤器、跳跃表等)
刚开始可以按照上述顺序每个类型先挑几个简单的题做一做,先对算法题的逻辑和实现过程有个初步的认知。尽量不要刚开始就挑战leetcode上中高难度题目,容易被打击自信、消磨积极性。在对算法题有了初步了解后,就可以开始刷题了。刷题不是单纯的题海战术,不要盲目的去刷,需要有针对性的、不断进行归纳总结和复盘。刷题的顺序和攻略非常重要,拒绝无效刷题。刷算法题主要分以下三个阶段:
初期-夯实基础:
- 代码随想录
- B站-灵山茶艾府
- 《剑指offer》--用最少的题目让你了解算法体系结构
这一阶段主要是学习解题思路,通过好的刷题路径培养自己的算法思维。上面三种资源都是快速上手学习算法比较好的攻略。大家可以参考,避免盲目无序胡乱的刷题导致学习效率低下,基本可满足刷题初期的需求,建议相互搭配、灵活选择使用。刷题初期阶段是比较痛苦的,一定要坚持下来,坚持每天都刷几道。
中期-升级进阶:
- LeetCode Hot100
- 各题目类型Hot题目:排序Hot、二分查找Hot、双指针Hot、链表Hot、滑动窗口Hot、深度优先搜索Hot、广度优先搜索Hot、贪心Hot、动态规划Hot、树Hot等
中期更多的建议自己独立刷题,每道题给自己十分钟的思考时间,看下能否根据初期的训练独立解答题目。如果不行,也要耐心,不要着急,参考题解去解题。按照这种方式把热门题目先刷一遍。刷完之后回头去看之前的题目,可能有些题目还是一头雾水,不知从何处下手。这种是大多数人的正常情况,这个时候就需要反复的去刷题,直接刷会为止。可能热门题目都要刷个2、3遍才会慢慢有解题感觉,在复刷的过程中就会形成自己的解题模板和思路。要刷到什么程度呢?就是某一具体题目,知道该用什么方法去解,题目的坑在哪里,例如回溯的减枝操作、二分查找的边界处理等。同时可以整理leetcode的收藏夹,收藏常出问题的重点题目。
后期-查漏补缺:
- 反复刷之前的题、尤其是自己总出问题的类型和题目 + 冲击Hard题目 + 补足缺陷、有意识总结自己在哪类题目解题比较吃力、比较薄弱的点,多找同类型题目反复练习。
- 实战,多参加LeetCode的周赛,在实战中查漏补缺。
- 面哪家刷哪家,有些公司是有自己的题库的,面试前可以参考。
项目部分:
如何在简历上写项目经历?
如何在面试过程中介绍项目?
简历上最重要的就是项目部分,但是受限于篇幅,大家可以去查看夏原文。
附带PDF学习资料。。。
关注weixin gong粽号:小鱼修炼笔记---获取更多面试秘籍及行业咨询