关于秋招的一些小结

秋招作为专门给应届生的招聘机会还是值得好好把握,然而秋招的时间也挺紧的。个人觉得集中在八月到十月。就谈谈我的秋招过程吧。
我是就读于一所双非本科,主要语言是JAVA,秋招也想找个JAVA相关的工作。

先大体的说一下几个点吧

  1. 学历
    学历是第一道门槛,就算是互联网也会根据学历去筛选,个人建议如果是产品可以依靠本科刷实习经历来。如果是做技术就拿个985或者计算机强校硕的学历其实会简单很多。

  2. 实习
    首先实习是必不可少的,实习建议选择一个大厂这是给简历贴金的主要方法而且你也可以通过实习转正获得offer,并且在大厂中你可以接触到很多的业务场景,大厂的技术氛围也更好。多去问问多实践并加以学习然后把你做事用自己的语言描述。实习并不是要你贡献或者输出多少,实习的首要任务是看懂项目代码,并且能把其中的难点和特点描述出来,在实习中也不要只只注重于业务,对于实习中见到的一些技术要加以理解与学习。在实习中多去接触业务场景与新的技术,然后再去系统的学习这些东西。做到多看,多问,多总结。举一个例子,我实习的时候部门用到elk集群,我也对这个东西有兴趣。这时候就要主动提出想学这个东西的想法,然后跟着这个项目的负责人开展实习工作。实习经历最好长且多。

  1. 项目
    项目是也是一个很重要的点,对于学生来说很多人的项目都是网上照着视频敲的或者搞一个半成品改的。这样的项目在面试中非常危险,第一点就是可能你的项目同质化非常严重,比如今年的秒杀项目这种情况建议直接从简历删掉这个项目。第二点就是可能你的知识深度与广度不够,面试时候对于具体某个模块的提问会让你直接gg。项目最好自己写完后深刻的梳理一遍对于项目的理解,对于其中的具体模块要做到熟悉。业务很重要其中用到的技术与设计也非常重要。项目在精不在多。

  2. 技术深度
    技术深度是在面试中脱颖而出的最好方法,对于面试人员来说也是最简单的去筛选面试者的方法,其中又有许多可以说。在这里举些表现技术深度例子。例如对java源码的研究,比如集合类,具体是怎么个插入,计和,扩容还有集合工具类的API以及其中用到的设计模式都值得探究。对于框架,常用的SpringMVC的执行流程,Spring源码其中的类装载,refresh()函数做了什么,单例池,其中用到的设计模式是怎么体现的,循环依赖所使用的三级缓存是怎么起作用的。对于Mybatis,是怎么把查询的结果封装成类的,Mybatis哪些用到了AOP也是可能会被问到的。最后是SpringCloud的一些组件源码与SpringBoot的一些starter源码。

  3. 技术广度
    在如今的情况下,拥有技术广度也是非常有必要的。对于后端技术,再了解些其他的比如卡夫卡与elk也是非常有必要的,但是切记必须对你所说的东西熟悉,如果是一知半解那也会在面试中失败。就现在的情况看卡夫卡在MQ领域的趋势也是必然的,这时候就建议研究下卡夫卡的一些组件与底层执行过程,对于elk来说就需要了解下其倒排索引,分词器,集群中通信协议,模板,分片,结点健康状况的定义,还有API以及查询缓慢的原因。如果再拥有其他一些技术,如信息安全就更好了,这种也需要你对于某个领域的研究如密码学,Web漏洞,安全日志的操作,内网渗透。

  4. 简历
    简历套模板写就行了,但是一定要写会的,如果只是一知半解就会翻车。

谈下JAVA常考的知识点吧

  1. 基本的东西
    基本的东西也就是指javase的API,这部分平时多写就行。比如怎么把一个集合转为数组如果写不出来就gg。
        Integer[] arr = list.toArray(new Integer[list.size()]);

还有一些基础的比如接口与抽象方法的区别(结合设计模式谈),java和c++的区别,String,Integer在JVM中的存放问题(考元空间与堆),这些也是常见的,花时间看看就行,还有JAVA的基础变量的内存大小,由此引出JAVA为什么最大内存是32G。再说下JDK的新特性,比如stream流与Jshell还有guava这些就更好了。也可以谈谈自己对于JDK新版本的理解。

  1. 多线程
    这也是个老大难的问题,除了多看多写没什么办法,具体的有CAS,AQS,阻塞队列,锁,volatile,ThreadLoacl这些东西。关于AQS之类的多去看看源码与解析吧,具体不展开讲了。还有就是线程池,Callable+Futuretask开异步的过程,这部分多写写多看看源码与解析,有时候还会叫你手写一个拒绝策略之类的。简单的说就是考这个知识点有时候还会延申,这就看自己的掌握程度了。
  2. JVM
    JVM也是经常问到的话题,看书吧《深入理解JAVA虚拟机》看了能解决些基本的问题,建议反复看因为我觉得这些知识忘的也很快。当然也要结合JAVA的版本来看,比如在JDK8中引入的元空间,在最新JDK中的ZGC稍微了解下。尽量细致,如垃圾回收,需要说下每种垃圾回收器(CMS与G1)的执行流程与他们的区别,再比如类加载建议自己实现以下,如果问得深可能会达到tomcat的类加载过程。这里也需要注意的是需要记一些所谓JVM的调优,比如对于堆开内存的指令,把垃圾回收器换成G1的指令。
  3. IO
    BIO与NIO的区别有时也会问起,这个需要分析两种IO的具体执行流程,在与磁盘的交互中面向buffer+channel的方式IO,在网络编程中selector的轮询+绑定事件。最后肯定会问到对于epoll函数的理解,这需要自己去看源码,其中还有就是epoll函数空轮询的bug,epoll函数的hook是怎么运行的。还有就是以前问过redis为什么这么快,其实主要也是IO的事情。
  4. 数据库
    科班学生应该都学过数据库,但是还是要经常写和复习,有时候面试的时候会叫你写一段数据库代码。难点还是在于索引吧,其实就是对B+树的理解,以及什么情况下索引会失效,还有就是慢sql日志怎么开启,对一条sql语句的执行过程进行分析。后面还有分表分库,主从复制知道怎么做就行了。
  5. 计算机网络
    TCP+UDP+HTTP理解下看看HTTP包就行了。慢开始,快重传,cwnd,rwnd了解就行。
  6. 算法
    leetcode+剑指offer,自求多福。

推荐书目

深入理解JAVA虚拟机
effective java
java高并发编程的艺术

你可能感兴趣的:(关于秋招的一些小结)