文档章节

经过这么多次java面试,我明白了这么多道理

G
 GeCoder
发布于 2018/09/11 09:49
字数 1664
阅读 220
收藏 26

最近3个月一口气面了十几家公司的Java开发岗,大大小小的面试笔试加起来快20场,收获很多。本人毕业快2年了,毕业时在学校所在的2线省会城市找了家开发公司做java的开发,前前后后做了1年半,感觉公司对技术没有啥追求,做的项目翻来覆去就是SSM那些东西,左思右想辞了职,当了北漂,把自己包装成2年工作经验开始了苦逼的求职之路。

之所以面了这么多公司,是因为刚开始面试时发现自己掌握的东西与这边流行的技术有些代差,所以一边面试一边总结,3个月也学到了很多,至少将一些基础的东西加深了不少,所以后面有了底气去面试一些大公司。感觉这边面试时问的东西明显和原来所在的城市不一样,所以总结了一下给有需要的朋友参考吧。

一、笔试常见的问题?

  • 写SQL很常考察group by、内连接和外连接。

  • 手写代码:手写代码一般考单例、排序、线程、消费者生产者。我建议排序算法除了冒泡排序,最好还能手写一种其他的排序代码。试想:如果一般面试者都写的冒泡排序,而你写的是快速排序/堆排序,肯定能给面试官留下不错的印象。

 

二、面试流程

  • 让你自我介绍

  • 问Java基础知识

  • 问项目

  • 情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。

  • 你有什么想问面试官的

 

三、面试常问的知识点

1)集合相关问题(必问)

  • HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。

  • HashMap和Hashtable的区别

  • ArrayList、LinkedList、Vector的区别

  • HashMap和ConcurrentHashMap的区别

  • HashMap和LinkedHashMap的区别

  • HashMap是线程安全的吗

  • ConcurrentHashMap是怎么实现线程安全的

 

2)多线程并发相关问题(必问)

  • 创建线程的3种方式。

  • 什么是线程安全。

  • Runnable接口和Callable接口的区别。

  • wait方法和sleep方法的区别。

  • synchronized、Lock、ReentrantLock、ReadWriteLock。

  • 介绍下CAS(无锁技术)。

  • volatile关键字的作用和原理。

  • 什么是ThreadLocal。

  • 创建线程池的4种方式。

  • ThreadPoolExecutor的内部工作原理。

  • 分布式环境下,怎么保证线程安全。

 

3)JVM相关问题

  • 介绍下垃圾收集机制(在什么时候,对什么,做了什么)。

  • 垃圾收集有哪些算法,各自的特点。

  • 类加载的过程。

  • 双亲委派模型。

  • 有哪些类加载器。

  • 能不能自己写一个类叫java.lang.String。

 

4)设计模式相关问题(必问)

  • 先问你熟悉哪些设计模式

  • 然后再具体问你某个设计模式具体实现和相关扩展问题

     

5)数据库相关问题,针对Mysql(必问)

  • 给题目让你手写SQL。

  • 有没有SQL优化经验。

  • Mysql索引的数据结构。

  • SQL怎么进行优化。

  • SQL关键字的执行顺序。

  • 有哪几种索引。

  • 什么时候该(不该)建索引。

  • Explain包含哪些列。

 

6)框架相关问题

  • Hibernate和Mybatis的区别

  • Spring MVC和Struts2的区别

  • Spring用了哪些设计模式

  • Spring中AOP主要用来做什么

  • Spring注入bean的方式

  • 什么是IOC,什么是依赖注入

  • Spring是单例还是多例,怎么修改

  • Spring事务隔离级别和传播性

  • 介绍下Mybatis/Hibernate的缓存机制

  • Mybatis的mapper文件中#和$的区别

  • Mybatis的mapper文件中resultType和resultMap的区别

 

7)其他遇到问题

  • 介绍下栈和队列

  • IO和NIO的区别

  • 接口和抽象类的区别

  • int和Integer的自动拆箱/装箱相关问题

  • 常量池相关问题

  • ==和equals的区别

  • 重载和重写的区别

  • String和StringBuilder、StringBuffer的区别

  • 静态变量、实例变量、局部变量线程安全吗,为什么

  • try、catch、finally都有return语句时执行哪个

  • 介绍下B树、二叉树

  • ajax的4个字母分别是什么意思

  • xml全称是什么

  • 分布式锁的实现

  • 分布式session存储解决方案

  • 常用的linux命令

 

四、一些经验

  • 先投一些普通公司,等面出了心得再去投理想的公司

  • 不熟悉的技术不要主动提

  • 对于那种实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去

  • 小公司喜欢在薪水上压你,开的时候适当提高

  • 不要去参加招聘会,纯粹是浪费时间

  • 把面试当作一次技术的交流,不要太在意是否能被录取

  • 公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,无论你自己觉得面的有多好

  • 尽量少通过电话面试,效果不好

  • 在面试的日子里,要保持每天学习,无论是学习新东西还是复习旧东西

  • 拿到offer了,问问自己这个公司让自己100%满意了吗,如果不是,请继续努力找更好的

  • 通过面试官可以大概判断这家公司的情况

  • 拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源

  • 理想的公司可以多投几次,我有好几次都是第一次投被筛掉,多投几次就过的经验

  • 问到自己有深入研究过的知识,抓住机会好好表现,不要轻易放过

如果你想成为一名优秀的java架构师,想学习Java高阶技术基础、框架技术的源码级分析、linux、SpringBoot、SpringCloud、阿里微服务框架Dubbo、Docker构建微服务或者在工作中遇到瓶颈,想跳槽加薪,面试不过, 碰到难题等等一系列问题,可以加我的架构师862039307,这里有专业的人为你排忧解难,有最新的学习资源免费为你共享。

© 著作权归作者所有

G
粉丝 12
博文 13
码字总数 16057
作品 0
长沙
私信 提问
经过了这么多场Java面试,我明白了这些道理

最近3个月一口气面了十几家公司的Java开发岗,大大小小的面试笔试加起来快20场,收获很多。本人毕业快2年了,毕业时在学校所在的2线省会城市找了家开发公司做java的开发,前前后后做了1年半,...

snailclimb
2018/08/24
0
0
年底了,该给自己写个总结了,一个六年女Java程序员的心声

简单的先说一下,坐标杭州,12届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的...

宋庆离
2018/12/24
0
0
这有一份阿里大牛的Java高级架构师教程,请查收

相信你可能经历过这些: 已经工作3年了,每个项目都会保质保量的完成,薪资却依旧不如意,多次提出加薪,领导总说哦哦哦知道了。 不止一次想象自己用Mac电脑和Cherry键盘撸代码的兴奋场景, ...

Java进阶高级架构
04/02
0
0
年底了,该给自己写个总结了,一个六年女Java程序员的心声

简单的先说一下,坐标杭州,12届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的...

宋庆离
2018/12/25
0
0
JVM系列开篇:为什么要学虚拟机?

跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现...

陈树义
2018/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决问题&发现问题

作为一个程序员非常重要的的能力就是解决问题的能力,当然除了解决问题之外,还有一个经常被疏忽的能力-发现问题的能力。 解决问题 一套有效的解决问题的能力非常重要,下面是一个解决问题的...

Lubby
22分钟前
6
0
Leetcode PHP题解--D104 167. Two Sum II - Input array is sorted

D104 167. Two Sum II - Input array is sorted 题目链接 167. Two Sum II - Input array is sorted 题目分析 给定一个已经排序好的整数数组,从中寻找两个数字,使其相加之后等于给定的一个...

skys215
28分钟前
4
0
IntelliJ IDEA Spring Boot 2.x 多模块项目创建

在学习Spring Boot 2的时候顺便来学习创建下Maven下的多模块项目创建。方便学习使用整套开发流程。 第一步,检查IDEA,新版本的IDEA可能没有Spring Assistant可通过插件安装(Preferences->P...

被猪拱了的JAVA
29分钟前
6
0
Java运行状态分析2:获取线程堆栈信息

Java运行状态分析2:获取线程堆栈信息 基本概念 出现内存泄漏或者运行缓慢场景,有时候无法直接从业务日志看出问题时候,需要分析jvm内存和线程堆栈 线程堆栈信息主要记录jvm线程在某时刻线程...

indi_yugj
29分钟前
11
0
解决java编译错误:编码GBK的不可映射字符

https://www.cnblogs.com/charleswong/p/8481593.html 新建java文件,存储时Encoding选择了UTF-8, 由于语句中包含中文,javac编译时报错,提示"编码GBK的不可映射字符": 解决办法: 方法一...

时刻在奔跑
36分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部