阅读 479

去年裸辞,今年慌了,大四后端Java仔的求职念经 | 掘金技术征文

0. 前言

  • 简单介绍一波,二本,大四,计算机科学与技术专业。
  • 写Java大概是从大一结束过后开始的。没人带自己看教程,看视频,看属性学的。大二和同学一起创了一个应用开发实验室,然后写了2年多后端。
  • 主要涉及过的技术大概是:Spring Framework(Spring、SpringBoot、SpringMVC)MyBatisNettyDubboZookeeperRedisMySQLElasticsearchRocketMQ;有了解过SpringCloud(demo水平),其他的话,平时不出去时间比较多也接触过GolangScalaHadoopSpark相关的。
  • 大学大二暑期实习两个月,大三在校期间实习了两个月,暑期实习4个月。
  • 去年大概10月20多号,由于一些原因离职了,然后就回学校搞实习的事情了。

1. 春招之路

1.1 起 (准备阶段)

  • 笔者大概是从12月份开始准备的、当时没想着参加补招,想着直接参加春招,好好修炼一波。(去年最后悔的事情)

  • 划重点面试难度:大三上册实习 < 大三下春招 < 大四下秋招 < 大四下秋招

  • 大致的准备的知识:

  • Java基础 ★★★★★

  1. Java的基本特性:继承 封装 多态 及衍生的一些知识
  2. Java关键字:static final super this transient new instanceof switch 的作用
  3. Java字符串相关:String StringBuilder StringBuffer CharSequenceAbstractStringBuilder` 源码级别
  4. Java集合框架(容器框架)Map Set List Queue 接口及实现类 Stack 源码级别
  5. Java输入输出类:InputStreamOutputStream相关的类 以及工具类
  6. Java数组这个我被问过3次,反正我是没答好,每个面试官的花样都不一样,我服了

这部分知识比较

  • Java多线程 ★★★★★
  1. 关键字:synchronizedvolatile 内存语义、sync锁升级、happens-before、as-if-serials、JMM、volatile轻量级同步实现、CAS算法(ABA问题)
  2. Lock接口下的类:主要是ReentrantLockReentrantReadWriteLock 源码级别
  3. 锁分类: 公平/非公平 共享/排他 死锁/活锁 乐观锁/悲观锁等
  4. ReentrantLocksynchronized的对比
  5. AQS 相关:AQS源码 及 常见并发控制类源码级别(SemaphoreCountDownLatchCyclicBarrierExchanger等)
  6. 原子类:AtomicXXXX AtomicXXXArray AtomicReference XXXAdder XXXAccumulator 底层的CAS一定要去看看。。。
  7. 线程池Executors框架 ThreadPoolExecutor 源码。线程池的执行过程(往里面加线程) 各个参数的作用。如何实现线程复用的?核心线程和最大线程?阻塞队列?拒绝策略?存活时间?...
  8. ThreadObject 多线程相关的方法作用及区别
  9. 并发容器:ConcurrentHashMap CopyOnWriteArrayList
  10. ThreadLocal源码

ps: 这部分 建议背书:《java并发编程艺术》 《Java并发编程实战》如果不愿意看书可以去看看悟空的并发课

  • Java 网络编程 ★★
  1. Java网络编程基础:BIO NIO AIO 最主要是NIO
  2. java网络编程框架:Netty:源码、零拷贝、TCP粘包/拆包、websocket实现案例、线程模型等

ps: 这部分我建议可以看 某某谷的Netty教程,B站就有,啊 万能的B站

  • JVM ★★★★
  1. Java运行时数据区、对象内存
  2. 辣鸡回收算法及收集器
  3. JVM命令及JVM问题排查
  4. JVM的类加载

ps: 这部分 我建议背书《深入理解JVM》这样你能和面试官吹牛逼

  • 计算机基础 ★★★
  1. 数据结构与算法: 数组、链表、队列、栈、树、图、堆、散列表、本科8大排序、剑指offer、LeetCode
  2. 操作系统:进程、信号量、内存管理 (这部分我看得比较少,背就完事了),
  3. 计算机网络:7层模型 4/5层模型 TCP/IP协议(重点)、HTTP(1.0, 1.1, 2)与HTTPS、DNS、常见加密算法,对称与非对称,网络攻击

ps: 基本算法300题左右足够,有些高频的刻意记一下,操作系统主要背、计算机网络也是背,网络的频度比操作系统高,最好深入理解,多问为什么

  • 数据库MySQL ★★★★★
  1. 范式与反范式设计
  2. 事务特性及隔离级别
  3. SQL语句(连表、函数等)、SQL语句优化、慢查询
  4. 索引分类、索引底层实现、索引优化、索引的选择
  5. 日志 redo undo bin
  6. 表锁、行锁、共享锁、排他锁、乐观锁、悲观锁、间隙锁、innodb和MyISAM锁的区别
  7. innodb和MyISAM两个存储引擎的对比。其实还有一个MEMORY引擎和REDIS的对比
  8. 分库分表

ps: 这部分 老实说可深可浅,最好深入理解

  • Redis ★★★
  1. 5大基本数据类型及底层实现 另加高级结构:HyperLogLog、GEO、Bitmap...
  2. 持久化:RDB和AOF 各自的实现方式和特点,如何结合使用
  3. 缓存淘汰策略、哨兵、集群 Raft算法
  4. 应用场景、缓存常见问题(如:缓存雪崩)
  5. Redis单线程高性能的原因? I/O多路复用、内存级别(寄存器 > L1-3cache > RAM > ROM )
  6. 分布式锁、消息队列、发布订阅等

两本书:老钱的《Redis实战》名字有点不准确 暂时忘了,另外一半是《Redis设计与实现》

  • Spring Framework ★★★★
  1. IOC和DI 、AOP解释。
  2. Bean加载过程、Bean的生命周期
  3. 依赖注入实现、依赖查找实现、循环依赖、延迟加载等
  4. Bean的层次上下文实现
  5. Spring 常用注解
  6. SpringMVC的请求处理过程
  7. PostProccessorAware、事件机制等
  8. SpringBoot自动装配实现方式 starter
  9. SpringBoot的启动大致过程
  10. SpringBoot的常用组件:data相关模块、日志sl4j-logback
  11. Spring事务管理TransactionManager:XA事务、JTA事务、链式事务、消息驱动型事务,可以去了解一下开源组件Seata,还有2PC 3PC TCC 这些

这个学习渠道就很多了,我看了一些视频教程(自己找,避免有些人说我打广告),还有博客,掘金上也有很多源码分析可以搜一波

  • 其他 ★★★
  1. MyBatis:动态SQL的实现、从SQL查询结果到对象的过程
  2. Zookeeper:分布式锁实现、CAP、BASE、PAXIOS等 对比Eureka
  3. Dubbo:看了一点序列化及 和注册中心相关的代码
  4. Elasticsearch:ELK用过了解是什么、倒排索引
  5. RocketMQ:消息队列的用途、RocketMQ的高可用、RocketMQ的事务、对比其他消息队列
  6. SpringCloud:demo写了写、真香

1.2 承 (投简历)

  • 投简历,我大概投了100+的公司,途径包括:同学内推、掘金和牛客的内推(掘金的大度应该不会和谐)、企业招聘网站、第三方招聘网站、校园招聘;注意这是有顺序的、越前面的越容易命中。

  • 说下结果吧,有的企业(如:Y动),简历都过不了,招聘群HR号称本科及以上就可以、自己投大厂的官网(如:易、米、B等),大概率石沉大海,最气的是,人家都入职了,我还在简历筛选。。。当时我就告辞了;内推的话,基本一半一半,较为容易获取面试机会。最终去的最后揭晓。

  • 建议投简历的方式:适当修改,以不同的简历,投不同的公司,如果你特别中意的,要有针对性。有的公司不喜欢在学校简历单一的(HR和大领导不喜欢)。有的公司喜欢在大学努力学东西的人。这个可以问问内推人。先投150-500的公司,不要太快,每天抽1小时以内,来投,投个10来家,就可以了。如果接到邀约,最好是晚上面试,早上不醒,下午想睡,晚上贼清醒。大概面到3家的时候就可能会有Offer。。。然后可以投投500+的公司。具体看你自己喜欢吧。今年好多大厂假招,(此处深刻得谴责某些厂,为了某些原因空挂招聘)。

1.3 转 (面试)

  • 上面说了面试3家就基本有Offer了,现在面试基本都3-5面,两面技术面是基本操作。有的三面技术包含交叉面,1-2面HR。为什么要3家后才去500+人的厂,3家面试过后基本你就面了5次左右技术面。找找自己的漏洞,基本3家能过1家就比较幸运了,然后继续面。。话说回来,其实这类公司有的还挺不错的。。。比如上海有家音频互联网公司。。。名字就不说了。自己猜。不过这部分大部分都是2B的公司。可以放缓,边复习边面试。每次做好记录。不要面完就忘。

1.4 合 (选择)

  • 看着自己写着写着发现写成了面试教学,反正我就是这样操作了。太难了。、

  • 我前前后后投了百来家把,大厂好多都没过简历。最终大大小小面了大概20家左右,过了大概一半的样子,不过这一半的一半我没有要Offer,校园招聘的质量是真的差。哎,我亲爱的母校什么时候能找点良心企业。我选投了几家,有家公司面试官说很看好我,然后HR说转正5k。我当时愣了一下。。。说远了。。。大部分是Offer薪资不满意,最后有3家公司选择把。一家在上海,两家杭州,上海的薪资高一点,杭州的低一点。但是最后我选择了杭州。大学在杭州。哎。。我爱杭州。。。。疯狂安利~~~~

  • 不过面试中有个很有意思的事情,有一家公司,HR第一次电话给我谈薪资,我说能不能高点,她说去申请,然后第二次电话再来,就变成了实习Offer。。。因为我和技术面试官加了微信,然后技术面试官告诉我,领导不批。。。本来这家公司是最满意的 主要是面试官很聊得来 我也觉得聊得很开心。。。我都惊了,HR都没去问就和我谈吗?GG。。。

2. 结语

  • 虽然写得有点乱,反正都是我前面12-03月的经历,总结来说就是背书加理解,加综合应用,有些场景题,是不太好答的,个人觉得得靠积累,临时补是不太有用的。广度不够。。但是,如果你牛逼,你记忆力好,什么公司都不是梦。。。。。。。哈哈哈哈哈哈哈哈哈开个玩笑。

  • 希望能帮到还在找工作的大四仔

END