由于不想做自己本专业的工作,觉得没前途,于是我做了一个重大的决定,从2021年6月份开始报班学习JAVA,从一开始没怎么学过Java,然后到基本上对Java有了初步的了解,然后开始熟练使用JAVA,并拿到第一份Java方面的offer居然只花费了8个月时间,这里我得好好感谢牛耳。
Java学习
从刚开始啥都不懂,后面跟着老师慢慢敲,慢慢学,然后开始自己独立完成项目是一个漫长的过程。期间,需要坚持,需要培养自己的兴趣,学会总结,多敲代码对于开始学习java的我来说基本上是每天必备的事。Java的基础打好是很重要的,所以刚入班后,基本上每天都和同学学到很晚,学的过程中,收获了很多,当然也就有了兴趣,也就有了学习的动力。
面试总结
我们是去年6月份开的班,今年3月份就开始有公司来学校招人,年初机会还是挺多的,我也尝试面了很多公司(由于基础知识不怎么样被刷了好多次),最后有拿到2个offer,两家都是牛耳这边的合作企业,其中有家给的薪资不高,我就拒了,最后入职到上海那边,我应聘的是java方向的软件开发工程师,大概总结了一下面试要点(大家学习的时候可以多关注这些点)。
对于大部分公司,一般从项目开始问起,所以自己一般需要准备2-3个项目,而且需要非常熟悉自己的项目(最好每次面试的时候把问到的项目问题总结一下,加深对项目的理解),以及自己用来运行项目的环境。比如Springboot,你需要知道你这个软件为啥要用Springboot进行搭建,以及SpringMVC的工作原理和Spring的两大核心。同时可以与其他框架进行对比。
除了项目之外,数据库的知识需要非常扎实,面试官主要会问数据库的事务,索引,以及数据库的查重的方式。有时候可能会让你现场手写查询语句。(没事的话可以去刷刷数据库的题),除了数据库之外,java中的集合也是面试官的重点,可能会从项目中开始问,问你项目中用过哪些集合,ArrayList和LinkList的区别,HashMap是一个重点,你需要去了解HashMap的底层原理,以及与HashTable的区别还有concurrentHashMap的区别。(集合那张关系图需要好好了解,很多笔试题会考他们之间的关系)。然后多线程同步那里也是一个面试官经常问的点,比如Synchornized和lock的区别,线程池的几种创建方式,死锁的必要条件等。
然后就是网络方面了,TCP,UDP的区别,http的请求头需要去了解一下,状态码也要去了解,http和https的区别。OSI七层模型、TCP/IP四层模型会在笔试题中出现。
然后重点来了,数据结构方面,一般想去好一点的互联网公司,数据结构真的很重要,现场手写数据结构代码是必不可少的,给你一棵树,你需要会遍历这棵树之类(先序,中序,后序),的,各种排序算法代码需要完全背下来(堆排序和归并排序可以简单记一下,但需要了解原理,一般手写排序算法,难度会停在快速排序那里),如果公司看中基础的话,java虚拟机也是一个问点,比如虚拟机中内存的分布,垃圾回收机制等
设计模式也可以去了解一下,有些公司也会提一下,可以给面试加分。当然知道的东西越多,给面试官的感觉越好。像BAT等大公司的话,自己还得学点东西,把基础打牢固。算法方面要求会很高。
总之,想去好公司的话,要求会很高,首先需要过他们的笔试,笔试对Java基础的要求还是很高的,然后一般会有1-2轮技术面(对于一般的互联网公司,一般情况下会是一对一面) 然后会有终面也就是hr面,主要测试你的性格(这轮我被刷过两次,T_T),全部过了的话,就是谈offer了,谈薪资待遇,谈培养计划之类的。(这里就是你选他们了,^_^)。