| 失效链接处理 | 
| 
      Java跳槽涨薪精选面试题  PDF 下载 
	相关截图: 
![]() 
	主要内容: 
		4、String、StringBuffer、StringBuilder的区别 
	
			1. String是不可变的,如果尝试去修改,会新⽣成⼀个字符串对象,StringBuffer和StringBuilder是 
		
			可变的 
		
			2. StringBuffer是线程安全的,StringBuilder是线程不安全的,所以在单线程环境下StringBuilder效 
		
			率会更⾼ 
		
				5、ArrayList和LinkedList有哪些区别 
			
					1. ⾸先,他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实 
				
					现的 
				
					2. 由于底层数据结构不同,他们所适⽤的场景也不同,ArrayList更适合随机查找,LinkedList更适合 
				
					删除和添加,查询、添加、删除的时间复杂度不同 
				
					3. 另外ArrayList和LinkedList都实现了List接⼝,但是LinkedList还额外实现了Deque接⼝,所以 
				
					LinkedList还可以当做队列来使⽤ 
				
						6、CopyOnWriteArrayList的底层原理是怎样的 
					
							1. ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素 
						
							时,会复制⼀个新的数组,写操作在新数组上进⾏,读操作在原数组上进⾏ 
						
							2. 并且,写操作会加锁,防⽌出现并发写⼊丢失数据的问题 
						
							3. 写操作结束之后会把原数组指向新数组 
						
							4. CopyOnWriteArrayList允许在写操作时来读取数据,⼤⼤提⾼了读的性能,因此适合读多写少的应 
						
							⽤场景,但是CopyOnWriteArrayList会⽐较占内存,同时可能读到的数据不是实时最新的数据,所 
						
							以不适合实时性要求很⾼的场景 
						 | 
    




    
苏公网安备 32061202001004号


    