为期一个多月的春招旅程终于告一段落了,春招过程中牛客也带给了我很大的帮助,今天写一个经验贴讲下自己从去年10月放弃考研,转Java开发备战春招,到如今如愿拿到offer的学习历程。
后来又很多人又私聊我问了一些问题,我尽可能的补上
个人背景
- 某末流985国贸专业本科
- 大学前三年除了计算机二级考了Python外,没接触过编程(随便吐槽下Python是我们专业选修,而且不选很难修够分,不知道是哪个神仙老师安排的🤣)
- 去年从6月起复习考研,到10月中旬下定决定转程序员(一入此门深似海🤣)
- 春招从3月起,主要使用Java的公司面过的都收到offer了
面试经历
- 华为一面挂(只问了两个算法,一个中等秒做,一个是困难变种,遇到过的最难算法,目前还是不会🤣)
- 腾讯二面挂(也只被问了两个问题,以前的面经中有,这两次面试沉重打击了我的信心🤣)
- 字节二面挂(总共面过5次,10个算法做了9个还是最多二面,可能就是无缘吧🤣)
- 跟谁学offer
- 美团offer
- 招银offer
- 小米offer
- 网易offer
简历篇
我第一次用的简历是淘宝上找人做的,很花哨,但后来经过在牛客网上找的大佬指点,才知道其实程序员的简历越简洁越好。我强烈推荐《超级简历》这个网站,里面制作程序员简历很方便
因为是非科班,能写的东西很少,没有相关奖项,没有比赛,甚至可能像我实习经历也非常水,那么只能在项目上多做文章了。
我是用了两个项目
- 一个是分布式的秒杀系统,自己部署在了租的阿里云服务器上,这个项目把传统CRUD的一套技术栈都覆盖了,而且因为可以实际上线,可以学到很多东西。
- 另一个是基于BIO、NIO、AIO实现的多人聊天室,很简洁,用命令行运行的,主要是为了学习IO,尤其是IO多路复用的知识,redis和ngnix中都用到了NIO,能把这些搞清楚面试会很加分。
计算机基础
- 《数据结构与算法》这本书算是数据结构的入门,非科班第一遍看可能有些晦涩难懂,可以先看一遍中国大学慕课网上的课再看书会好很多
- 《操作系统》除了课本外也推荐看网课,网课讲解的比较清楚
- 《计算机网络》除了书和网课外可以看看极客时间的《趣谈网络协议》,这个课程把很多基础的网络知识讲解的很形象
- linux基本的命令可以看《鸟叔的linux私房菜》,还有极客时间的《Linux实战技能100讲》
Java相关书籍
- 《Java核心技术-卷一》Java入门书籍,刚开始看可能很多概念看不懂,我觉得没必要深究,接着看下去,以后再来查漏补缺最好。
- 《深入理解Java虚拟机》JVM几乎是必考内容,所以这本书一定要看仔细,尤其是JVM内存结构和垃圾回收的部分,最后还有一部分并发编程的讲解也非常清晰易懂。中间字节码文件结构和参数调优的部分我觉得不用细看,因为没有实际使用经验很难看懂,而且面试过程中也几乎不会被问到。不过常用的参数比如Xms、Xmx这些还是最好有所了解。
- 《Java并发编程实战》并发编程也是Java常考点,最好能用一本书系统的学习,这本书就把Java并发编程知识讲解的很透彻。不过我建议反着看这本书,比如Java内存模型这种对于volatile关键字以及CAS等为基础的内容居然被这本书放在最后一章🤣,我第一次看书正着看,被前面章节中诸如发布泄露、委托失效等概念搞得头很晕。但第二次反着看这本书就觉得顺序对多了🤣。某课网上也有讲java并发编程的课程,我觉得还是比较有帮助。
- 《Java EE互联网轻量级框架整合开发》这本书结合了springMVC、MyBatis、Redis的内容,非常适合用于进阶知识的学习,很多框架方面的书通篇贴代码,也没有细致讲解很多原理。这本书算是我看过的框架类书中最好的一本了。不过建议框架类的书也是放在最后再看。
- 《高性能MySQL》前六章,这本书的前六章基本涵盖了一般面试中会问到的数据库知识,尤其是索引那部分。
常见面试考点
以下是我在面试过程中常被问到的知识点以及部分答案,有错的地方希望各位大佬指正🤣
- String在new和直接赋值时的区别:new是在堆上新建一个对象,直接赋值时指向堆的字符串常量池中(JDK1.7之前这个常量池在方法区中,1.7后被移到堆里,因为JDK正逐渐减少方法区的内存)
- hashmap是否线程安全,有什么安全的hashmap?:不安全,因为在多线程同时put时或者在扩容时Put都会有线程安全问题。安全可以使用hashtable、Collections.synchronizedMap、ConcurrentHashMap这三类。但前两类都是直接在方法标签上加了synch