程序员需求量大,但是公司在选人的时候对于程序员的选择也有一定的考量,面试是程序员进入一个公司的第一道关。
一次成功的面试成为了程序员搞定优质职位的快速方式,总结了一些程序员在面试中会经常遇见的问题。
面试题
=======
1. java基础以及多个“比较”(一般小白都会,难的在后面)
( 1)String 和 StringBuilder 的区别
( 2)Vector 与 Array 的区别
( 3)HashMap 与 Hashtable 的区别
( 4)ArrayList与 LinkedList 的区别?
( 5 ) Java 中,Comparator 与Comparable 有什么不同?
( 6 ) 抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类?
( 7 ) Collection与Collections的区别是什么?
( 8)java中public,private,protected以及默认关键字的访问范围:
( 9 ) poll() 方法和 remove() 方法的区别?
(10)写一段代码在遍历 ArrayList 时移除一个元素使用迭代器。
2. JVM
(1)JVM如何加载一个类的过程,双亲委派模型中有哪些方法
(2)GC算法(什么样的对象算是可回收对象,可达性分析),CMS收集器
(3)JVM分为哪些区,每一个区干吗的?
(4)JVM新生代,老年代,持久代,都存储哪些东西?
(5)内存溢出和内存泄漏:
(6)进程与线程:
(7)序列化与反序列化:
(8)64 位 JVM 中,int 的长度是多数?
(9)Java 中 WeakReference 与 SoftReference的区别?
(10)解释 Java 堆空间及 GC?
3. 并发,锁
(1)java每改一点都需要重新编译打包部署,有没有更好的方法
(2)进程间通信有哪几种方式?
(3)Sychronized修饰静态方法,锁定类本身而不是实例,非静态方法锁定实例。
(4)操作系统什么情况下会死锁?
(5)产生死锁的四个条件:
(6)如何理解分布式锁?
(7)线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?
(8) 同步和异步有什么区别?
(9)如何调用 wait()方法?使用 if 块还是循环?为什么?
(10)什么是多线程环境下的伪共享(false sharing)?
4. 网络、数据库
(1)TCP如何保证可靠传输?三次握手过程?
(2)Linux下你常用的命令有哪些?
(3) 常用的hash算法有哪些?
(4) 什么是一致性哈希?
(5) 数据库中的范式有哪些?
(6) 数据库中的索引的结构?什么情况下适合建索引?
(7)concurrent包下面,都用过什么?
(8)常用的数据库有哪些?redis用过吗?
(9)你知道的开源协议有哪些?
(10)表单提交中,get和post区别
5.面试题目答案以及答案解析:
(1)String 和 StringBuilder 的区别
解析 : 1,可变与不可变: String不可变,每一次执行“+”都会新生成一个新对象,所以频繁改变字符串的情况中不用String,以节省内存。
2,是否多线程安全 :StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。StringBuffer和String均线程安全。
(2)JVM如何加载一个类的过程,双亲委派模型中有哪些方法
解析:类加载过程: 加载、验证(验证阶段作用是保证Class文件的字节流包含的信息符合JVM规范,不会给JVM造成危害)、准备(准备阶段为变量分配内存并设置类变量的初始化)、解析(解析过程是将常量池内的符号引用替换成直接引用)、初始化。
写在最后
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
Mybatis面试专题
MySQL面试专题
并发编程面试专题
和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
[外链图片转存中…(img-zmfovcNE-1718770024081)]
Mybatis面试专题
[外链图片转存中…(img-TIqsf2cA-1718770024082)]
MySQL面试专题
[外链图片转存中…(img-p60aYG4Y-1718770024082)]
并发编程面试专题