• 牛客网AI面试题目


    第一轮

    1. 静态库和动态库如何制作及使用,区别是什么
      https://blog.csdn.net/qq_38526623/article/details/110928986
      制作与使用:
      静态库:
      gcc获得.o文件 ->将.o文件打包,使用ar工具(archive)->编译和链接
      动态库:
      gcc得到.o文件,得到和位置无关的代码->gcc得到动态库->编译和链接
      区别:
      ● 静态库是在程序链接阶段被复制到程序中,动态库是在程序运行时被加载到内存中被调用。
      ● 静态库加载速度快,可移植性高,但是比较消耗系统资源,更新部署发布比较麻烦。
      ● 动态库加载速度慢,移植需提供动态库。进程间资源共享,更新、部署、发布比较简单。
    2. 说一说HashMap的实现原理
      在jdk1.7之前HashMap是基于数组和链表实现的,而且采用头插法。
      而jdk1.8 之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。采用尾插法。
      HashMap默认的初始化大小为 16。当HashMap中的元素个数之和大于负载因子*当前容量的时候就要进行扩充,容量变为原来的 2 倍。(这里注意不是数组中的个数,而且数组中和链/树中的所有元素个数之和!)
    3. Serializable接口为什么需要定义serialVersionUID常量
      serialVersionUID常量用于标明当前Serializable类的版本,以验证加载的类和序列化对象是否兼容。
      在进行序列化时会将当前类的serialVersionUID写入到字节序列中,在反序列化时会将当前字节流中的serialVersionUID同本地对象中的serialVersionUID进行对比,如果相同则继续序列化,如果不同则失败报错。
      serialVersionUID常量值默认为1L。
    4. 说一说zset类型的底层数据结构
      zset底层的存储结构包括ziplist或skiplist,在同时满足有序集合保存的元素数量小于128个和有序集合保存的所有元素的长度小于64字节的时候使用ziplist,其他时候使用skiplist。
      当ziplist作为zset的底层存储结构时候,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员,第二个元素保存元素的分值。
      当skiplist作为zset的底层存储结构的时候,使用skiplist按序保存元素及分值,使用dict来保存元素和分值的映射关系。
    5. 给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。
      在这里插入图片描述
  • 相关阅读:
    S2B2C商城系统平台功能模块分析,加速医药制造企业数字化转型落地
    大厂密集背后,折叠屏市场“暗战”已起
    【软件工具】百度搜索技巧
    Linux 中的make/makefile
    redis 高可用
    01——golang简介
    【OFDM通信】基于matlab深度学习OFDM系统信号检测【含Matlab源码 2023期】
    【数据集制作】用于语义分割,labelme4.5.13版本,实现按照指定颜色生成分割颜色批量转换json文件
    2022年中总结
    面试宝典-Mysql篇
  • 原文地址:https://blog.csdn.net/AzirBoDa/article/details/126157104