• 牛客网AI面试第三轮


    1. DNS(域名系统)是什么?
      dns 是域名系统的缩写,由解析器和域名服务器组成,域名服务器是指保存有该网络中所有主机的域名和对应的ip地址,并具有将域名转换为ip地址的服务器。
    2. 说一说ConcurrentHashMap的实现原理
      JDK1.5中的实现
      ConcurrentHashMap使用的是分段锁技术,将ConcurrentHashMap锁一段一段的存储,然后给每一段数据配一把锁(segment),当一个线程占用一把锁(segment)访问其中一段数据的时候,其他段的数据也能被其它的线程访问,默认分配16个segment。默认比Hashtable效率提高16倍。
      JDK1.8中的实现
      ConcurrentHashMap取消了segment分段锁,而采用CAS和synchronized来保证并发安全。数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。
      synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。
    3. 介绍一下Java中的IO流
      输入流与输出流、字节流与字符流、节点流与处理流
      流是Java对不同输入源输出源的抽象,代表了从起源到接收的有序数据,有了它程序就可以采用统一的方式来访问不同的输入源和输出源了。
      按照数据的流向,可以将流分为输入流和输出流。其中,输入流只能读取数据、不能写入数据,而输出流只能写入数据、不能读取数据。
      按照数据的类型,可以将流分为字节流和字符流。其中,字节流操作的数据单元是byte(8位的字节),而字符流操作的数据单元是char(16位的字符)。
      按照使用的场景,可以将流分为节点流和处理流。其中,节点流可以直接从/向一个特定的IO设备读/写数据,也称为低级流。而处理流则是对节点流的连接或封装,用于简化数据读/写功能或提高效率,也成为高级流。
    4. 说一说你对Spring AOP的理解
      AOP面向切面编程,将代码中重复的部分抽取出来,使用动态代理技术,在不修改源码的基础上对方法进行增强。如果目标对象实现了接口,默认采用JDK动态代理,也可以强制使用CGLib,如果目标对象没有实现接口,采用CGLib的方式。常用的场景包括权限认证、自动缓存、错误处理、日志、调试和事务等
    5. 最小的k个数
    import java.util.ArrayList;
    import java.util.*;
    public class Solution {
        public ArrayList GetLeastNumbers_Solution(int [] input, int k) {
            ArrayList res=new ArrayList();
            if(k==0 || input.length==0)
                return res;
            PriorityQueue q = new PriorityQueue<>((o1,o2)->o2.compareTo(o1));
            for(int i=0;i < k; i++)
                q.offer(input[i]);
            for(int i=k;i< input.length;i++){
                if(q.peek()>input[i]){
                    q.poll();
                    q.offer(input[i]);
                }
            }
            for(int i =0;i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    Collector原理解析
    java大作业中的文件操作
    docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区。docker迁移
    如何建立私域流量?私域流量怎么运营,一文读懂
    JetBrains Annotations:将NPE杀死在编译期
    【全民Python】Python环境配置和Pychram的安装使用
    使用基于swagger的knife4j自动生成接口文档
    【学习笔记】Redis的主从复制
    集合,数组,字符串相互转化
    【CV】第 9 章:使用多任务深度学习的动作识别
  • 原文地址:https://blog.csdn.net/AzirBoDa/article/details/126212779