秋招面经
我就不分开公司写了,都写在一起,直接来点干货比啥都实在,这里只指出学习的方向,主要还是得自己有动手能力,自己找着学习
一、框架
框架这个是真分公司,有的公司问有的公司一点都不问(我猜,公司问可能是公司在用这个框架所以才会问,如果不用就不会问),但是这个不是很重要,把核心原理会说就行
- Spring (IOC、AOP)这个是每个公司基本上都会问的,要求熟练到源码底层是怎么实现的,然后能对应的举例子说明,例如AOP引用事务处理之类的然后展开说。
框架最主要的靠你不光是原理最主要的是框架下使用的设计模式,这也就引入了设计模式的考点,例如AOP使用了动态代理(cglib、jdk)然后展开说,记住不管怎么说,一定要挑自己会的说,千万不要因为炫耀,而瞎说,这样只会越来越跑偏,最后与offer失之交臂,设计模式在后面进行举例
- MyBatis、Hibernate这两个框架的区别了解就好,主要也是要了解里面的设计模式,面试官不做重点考察
二、Java 基础(重中之重)
秋招主要还是看学生的基础,这个是最主要的,所以基础一定要打牢,同时面试官看重的是你解决问题的能力和思考方式,所以在面试的时候如果碰到不会的不要懵,也不要紧张,把会的写上,然后把思路写上,不一定全会再回要你,主要看重你的思考问题的能力和学习能力
基础都包括(线程安全、网络编程、集合、异常和泛型、流)
- 线程安全(面试官最愿意问的就是线程问题)
- CMS
- synchronized(优化)
- volatile关键字
这三个一定要学透了,底层的原理jdk1.8前后的区别,CMS是最重要的都是以他为基础的
- 线程池也要回底层的原理模型,的知道线程池的创建的整个底层过程是如果实现的,自己的能简单的把核心功能写出来
网络编程
网络编程最主要的就是靠你服务器的部署那一套,然后就是协议了
- TCP:三次握手,四次挥手一定的知道为甚么
- UDP
这两个协议的区别以及底层实现
- HTTP :超文本传输协议,Java WEB一定要会的协议,这个主要要知道他的传输结构、以及一些常用的状态码例如:500/404/301/302等等。
集合(老生常谈,一定的会常用的)
ArrayList、LinkedList、Hashmap(最重要没有之一,HashMap涉及到的都要会)底层实现一定要会,我建议我读源码,万变不离其中。
异常处理、泛型
异常主要考常用的异常类型,RuntimException等,一定的知道异常在什么时候用,怎么用、常用的异常之间的区别,泛型就是jdk的一种语法糖了,这个自己网上了解吧,这里主要指方向
各种文件流的区别和应用场景一定要会
NIO和AIO还有NIO的区别一定要知道,原理并且能举例进行说明
进阶 (操作系统、JVM、加密)
- 操作系统
- 处理机管理(处理机的调度、进程通信、进程调度、死锁等)
- 内存管理(页面置换算法、缓存之类的),cache算法用java实现(LinkedMap或者LinkedList+HashMap)
- 文件管理(各种分配算法,自己网上查吧,的能说出来)
- JVM(重点中的重点)
- 内存模型那几块一定的熟(本地方法栈区、JVM栈区、JVN堆区、程序计数器等)
- JVM 的设置参数要把常用的弄熟
- JVM 的线程模型
- 加密
对称加密算法、非对称加密算法等、MD5加盐之类的,自己找资源吧,别怕动手,能找到资源并且会用才是你的资源
c语言(一般都是笔试的时候用)
这个就多刷牛客的题吧,左成云的面试指南书上的一星和二星的一定要回手写,一般的手写算法都是在那上面的,就算没有也是哪里的变形,多加练习,例如 链表的问题(单链表反转,多链表的顺序拼接之类的,重点是基础(二八原则))
设计模式
- 单例模式:一共有7中写法(懒汉、饿汉、双检索、枚举、类加载等)
- 工厂模式:会简单工厂模式就行
- 建造者模式
- 命令模式
- 代理模式:静态代理和动态代理模式
- 观察者模式等
设计模式不光要知道是什么模式,还要知道在什么场合用,怎么用都的会
数据库
关系数据库
MySQL、Oracle
数据库要知道事务的级别,然后索引,索引是重中之重呀,底层的B+树一定要会,还有索引失效的几种情况一定要会,例如like查询%不能开头之类的,再有就是MySQL与Oracle的区别。
内存数据库
Redis等
Redis内存数据库也是常考察的,基本的数据类型,和底层的数据结构的实现,以及两种持久化方式(RDB、AOF)直接百度吧
数据结构与算法
要想拿到高薪offer,算法和数据结构一定要好,这是考官最看中的了
- 数据结构:链表、队列、栈、树(二叉树、多叉树、平衡二叉树、红黑树、字典树、B+Tree)树的几种遍历方式深度和广度《递归和非递归都要会写》哈希表这些都会,这些是前面的基础一定要回
- 算法:排序(插入、冒泡、快排、归并、堆排序,主要考时间复杂度和优化,一定的会手写) 查找 (哈希查找、二分查找)这些一定要都会手写
Linux的常用的命令
chmod、TELNET、ifconfig、ps、netstat、tail等知道是怎么用的并且能写出来
扩展 大数据、云计算
这个是现在的趋势,就算是人工智能也都的以这个为基础,所以没事的时候多看看这方面的数据,不要吝啬买书,多看书,增长知识面,尽量不要看盗版,因为每个人都不容易,另一方面,是因为你不花钱,就不知道,事情的重要性,你就不会上心(个人见解,不同意观点不要紧,每个人都不一样)