我来应聘一年java后台开发经验?
很久没有面试过一年Java开发经验的小伙伴了,那如果你是一年开发经验,并且已经通过了前面的初筛,也就是已经约好面试时间了。
现在开始咱们的面试。
面试官:您先自我介绍一下吧~
候选人:我毕业于xx大学计算机科学与技术专业,工作经验一年,工作期间主要负责xx项目的xx功能开发。熟悉的技术栈有Java基础,集合,多线程等知识,熟练使用SpringBoot框架。
PS:废话不要多说,说你真实的开发项目经验和你真正熟悉的技能栈。
面试官:ok,好的,那咱们先聊点Java基础吧,HashSet在项目中用过吗?它的底层实现你了解吗?
候选人:HashSet底层是HashMap,HashSet里的每一个元素就是HashMap里面的key。
面试官:那比如现在我要装一个User对象进去,比如Set<User> users = new HashSet<>(10);那么对于这个User对象有没有什么要求?
候选人:需要重写hashCode和equals方法。
面试官:ok,为什么要重写hashCode和equals方法呢?
候选人:首先,HashSet的特性是不可重复的并且是无序的。因为它的底层是HashMap实现的,HashMap的key就是HashSet的元素,所以他无法保证有序。那不可重复的就是当我们put一个KV数据到HashMap中去的时候,首先需要计算这个key的hashcode,然后在和当前hashMap的容量-1作与元算,即hashcode(key) & (n-1)来计算出他所在hashMap数组中的下标位置,这就是为什么要实现它的hashcode方法。那为什么还要实现equals方法呢?因为hashcode方法存在哈希冲突,无法决定一个对象的唯一性。
ps:能说到这你就成功了一半了!但是还没结束,因为面试官想知道你到底了解多少!
接下来会是什么问题呢?
那我们聊聊HashMap吧~HashMap的实现原理、扩容机制、为什么初始容量是16?为什么扩容都是2的n次方?HashMap是线程不安全的,线程安全的有哪些?HashTable、Collections.synchronizedMap、ConcurrentHashMapHashTable、Collections.synchronizedMap、ConcurrentHashMap都是怎么保证线程安全的?Volatile关键字的实现原理、synchronized关键字的实现原理锁优化、锁升级对象头mark word用户态、内核态先就这些吧,上面你能聊到哪就聊到哪,都是Java基础,不会了咱就停止,换一个方向~
后面会在问你数据库方面的知识,比如Innodb存储引擎的实现原理,B+树,为什么不用B树、二叉树等等。
什么是聚集索引、什么是非聚集索引、覆盖索引?回表是什么意思?
还有很多数据库的知识,有一句话叫做:“你会的越多,你不会的越多!”
如果上面你都ok,不需要问你项目经验,来干活吧!毕竟你只有一年工作经验,没啥项目可问的,又不是你主导的。
实在上面答的不好,只能问问你项目中的开发思路怎么样了,会尝试找你开发功能的漏洞,看你怎么临场发挥,说说你的思路,看看你的逻辑思维是否严谨。
以上,看看是否你都会,如果你都会,抓紧学习更多的知识去!如果你不会,抓紧学习更多的知识去!学无止尽~
上面的那些,由浅入深,五年十年的都可以问,有人说工作很多年的没必要问这些基础,我不这么认为。如果你开发多年,这些基础我认为你应该是深入骨髓的,无须准备便可脱口而出的,其他任何理由都是借口。