暑期实习总结与建议(真诚版)
一、暑期过程(略啰嗦)
3.7 从美团离职,开始找暑期,4.18 收到唯一一个 offer 和一个 hr 面(接了 offer,结束暑期)。
第一场面试是 3.17 的字节,连 HashMap 和 HashTable 的区别、B 树和 B+ 树的区别这些很基础的东西都说不上来,后来接连面了十几场,也只能说答上来 60% - 70% 左右。
四月初清明那会已经基本上心灰意冷了,开始投日常,没想到剩的两个流程都走到了最后。
二、准备暑期的学习建议
2.0 要构建自己的知识体系
具体来说就是写文档 / 博客。个人觉得这一点非常非常重要。
2.1 熟悉基础八股
什么是基础八股呢,举例子:
HashMap 的底层原理、Redis 主从复制过程、InnoDB 为什么采用 B+ 树的数据结构、AQS 原理、G1 垃圾回收器、浏览器访问网站的全过程、IO多路复用
怎么熟悉?构建自己的知识体系 + JavaGuide 等总结的八股 + 网上其他人整理的各模块的常用八股 + 面经补充
这个阶段要注重理解,只有真正理解了,才能记得住,才能承受住面试官的拷打。
2.2 深入底层
现在的面试很多时候不会局限于基础八股,会考察比较硬核的计算机基础知识,主要体现在操作系统上,比如说:
线程上下文切换涉及到哪些操作?为什么切换是比较重的操作?
CPU Cache 和内存是怎么交换数据的?
从操作系统的角度,一次磁盘 IO 的流程?
2.3 灵活运用
这部分不太好描述,对应的能力是在学习计算机知识的过程中自己沉淀的理解,举几个例子吧:
Java 在日常编码的过程中如何保证线程安全?
实现一个线程安全的无锁队列,说说你的方案,元素的入队和出队的实现方式?
Redis Client 是怎么传输命令到 Server 的?(比较特别的是七层网络模型中的表示层,也就是数据如何编码和序列化)(面试时甚至让我写对应的 JSON)
2.4 实战能力
比如:你们 MySQL 机器的配置是?一次 IO 需要多少时间?访问一次内存需要多少时间?同机房的网络传输大概多快?
2.5 系统设计题
说实话这部分我从来没准备,面试的时候也从来没有遇到过😂
个人感觉这部分可以找几个典型题吃透
2.6 算法
我自己是只刷了 hot 100,刷了 1.5 遍,大概 3.25 之后就没刷过了😂
我个人的考量是 hot 100 刷透是完全够的,再深入刷性价比不高
三、关于面试
最想说的是:不要过于怀疑自己的能力而内耗,很多时候是运气问题!
面试问的很难答的不好不代表不会过,体现出自己的思考就好
面试前可以花几个小时时间把体系过一遍,每次过的时候把不熟悉的地方重点标记一下,多看两遍
最后祝大家都能拿到满意的 offer🥺🥺🥺