面试题汇总

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题汇总相关的知识,希望对你有一定的参考价值。

java怎么删除ArrayList中的对象

package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

public class Demo 
    public static void main(String[] args) 
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");

        //增强for循环
        //新建一个集合,存放需要删除的元素
        List<String> list_remove = new ArrayList<>();
        for (String val : list)
            if(val.equals("1"))
                list_remove.add(val);
            
        
        list.removeAll(list_remove);
        System.out.println("增强for循环:"+Arrays.toString(list.toArray()));

        //迭代器
        Iterator iterator =  list.iterator();
        while (iterator.hasNext())
          Object obj = iterator.next();
            if("2".equals(obj))
                iterator.remove();
            
        
        System.out.println("迭代器:"+Arrays.toString(list.toArray()));

        //Stream
        List<String> newList = list.stream().filter(p->!p.equals("3")).collect(Collectors.toList());
        System.out.println("Stream流:"+Arrays.toString(newList.toArray()));
    

Collection和Collections区别

https://blog.csdn.net/xiaowanzi_zj/article/details/125775533

Redis为什么单线程还这么快

纯内存的KV结构,时间复杂度是O(1)、多路复用机制(同步非堵塞IO)、请求处理是单线程,没有上下文切换的开销

找出两个数组中相同的元素

for循环遍历、使用stream流、使用布隆过滤器

倒排索引是什么,请介绍一下

所谓的倒排索引,就是把你的数据内容先分词,每句话分成一个一个的关键词,然后记录好每个关键词对应出现在了哪些id标识的数据里。
https://m.toutiao.com/is/jCuDbTG/

在什么样的情况下,对象会进入老年代

1.存活对象达到年龄阈值(默认为15)
2.大对象直接进入老年代(超过了JVM中-XX:PretenureSizeThreshold参数的设置)
所以在写程序的时候要尽量避免大对象,更要尽量避免朝生夕死的大对象,经常出现大对象容易导致内存还有不少空间时就提前触发垃圾收集以获取足够的连续空间来安置他们。
3.幸存者区中如果有相同年龄的对象所占空间大于幸存者区的一半,那么年龄大于等于该年龄的对象就可以直接进入老年代。(动态对象年龄判定)
4.MGC后,S区空间不能容纳全部存活对象,直接进入老年代。

以上是关于面试题汇总的主要内容,如果未能解决你的问题,请参考以下文章

Day489&490&491.尚硅谷之高频重点面试题③ -面经

C++面试题汇总

Linux面试题汇总答案

面试题汇总

小猿圈web前端面试题汇总

四年Java面试遇到的问题整理,Java面试题汇总