校招新人谈实际工作中所使用的java集合感悟对简历书写的思考
- 前言
楼主目前主要做的工作就是平台开发,更直白的说就是写业务逻辑代码。在学习以及完成需求的过程中,我发现最常使用的两种java集合实现类是ArrayList(List)和HashMap(Map),List返回一串对象,Map返回一串key-value对象。那么我们在复习基础知识和书写简历的时候,是不是应该围绕List和Map去出发呢?
- List
例如,List的实现类来说,主要就是ArrayList和LinkedList两种,事实上,LinkedList的创造人宣称不怎么使用LinkedList,可见在实际工作中,List的主要实现类是ArrayList。
这恰恰是面试中一个高频知识点,即ArrayList和LinkedList有什么区别?
关于这个问题,我们应该从两个维度去考虑,即空间和时间维度去考虑,ArrayList和LinkedList只是我们的工具,谁能省下更多的时间和空间,我就选择谁。因此回答二者有什么区别,时间和空间角度一定是要答出来的,然后再从线程安全和底层数据结构维度进行回答即可。下面也列出相关问题,大家自行查阅答案,个人推荐javaguide。
- ArrayList的插入和删除元素的时间复杂度?
- LinkedList的插入和删除元素的时间复杂度?
- ArrayList的扩容机制?
- Map
Map是键值对集合,其主要实现类就是HashMap,HashMap的线程安全版为ConcurrentHashMap。我们在思考的时候也可以沿着这条线路进行。
HashMap的重要性不言而喻,因此,引申出来的多个问题就是:
- HashMap的底层实现(jdk1.7和1.8 代表着不同的底层实现,1.7数组加链表,1.8数组加链表/红黑树)
- 为什么线程不安全?
- 线程安全的是谁?hashtable吗?之间有什么区别吗?
- 线程安全的还有ConcurrentHashMap吗?他的底层实现是怎么样的?和HashMap有什么不同?和另一个线程安全的hashtable有什么不同?
- 长度为什么是2的幂次方
- 1.7的多线程死循环问题,1.8是怎么改的?
- HashMap添加一个元素的过程是怎么样的?ConcurrentHashMap的添加元素过程有什么不同?
- 其他集合queue:队列,相对来说在集合这里问的很好。set:实现类hashset,记住一点即可,set是基于map的key来存储元素的集合
- 面试建议:如果你时间紧急,一定要抓
- 简历关于集合的书写示例:熟练掌握 Java 集合等相关知识,如 List、Set、Map 的实现类 ArrayList、LinkedList 和 HashMap。
以上,就是我任务非常重要的面试知识点,可能不全面,欢迎大家评论区补充。
#简历##简历中的项目经历要怎么写##校招过来人的经验分享#