当前位置: 首页 > news >正文

松鼠 AI 25 Java 开发 一面

松鼠 AI 25 Java 开发 一面

本文作者:程序员小白条

本站地址:https://xbt.xiaobaitiao.top

1)自我介绍

2)接口调用平台需求分析、业务流程介绍

3)邀请码设计

4)Map、List、Set 区别

5)中奖名单用什么结构,统计人昵称和名次以及频率

6)HashTable 和 HashMap 的区别

7)JVM 垃圾回收,对象死亡判断、垃圾回收算法、垃圾回收器

8)进程和线程的区别

9)线程池的作用

10)内存泄漏的场景和解决方案

11)OSI 七层模型

12)TCP 和 UDP 的区别

13)TCP 可靠性怎么保证的?

14)数据库深度分页优化

15)联合索引场景和注意事项

16)算法:中序遍历 + 合并两个有序数组

反问:技术栈和业务,模块划分等。

2)接口调用平台需求分析、业务流程介绍

需求分析

  • 目标:统一管理外部接口调用,保障安全性和可观测性。
  • 功能:
    1. 权限控制:API密钥+IP白名单。
    2. 限流熔断:防止滥用(如令牌桶算法)。
    3. 监控报警:记录调用日志+失败告警。

业务流程

  1. 用户申请API密钥并配置权限。
  2. 调用时携带密钥,网关校验权限和限流。
  3. 请求转发至后端服务,结果返回并记录日志。

3)邀请码设计

  • 生成规则
    • 前缀(标识业务)+ 时间戳 + 随机码(如UUID部分字符)。
    • 示例:INV_20230801_3xY7
  • 存储:Redis(过期时间)+ MySQL(持久化)。
  • 校验:Redis查重+业务规则(如用户绑定防刷)。

4)Map、List、Set 区别

特性MapListSet
存储Key-Value对有序可重复元素无序唯一元素
实现类HashMap, TreeMapArrayList, LinkedListHashSet, TreeSet
用途快速查找(O(1))顺序访问/插入去重/集合运算

5)中奖名单结构设计

  • 需求:统计昵称、名次、中奖频率。

  • 数据结构

    java

    // 使用Map嵌套List  
    Map<String, List<Record>>  
    // Record包含:rank(名次)、frequency(频率)  
    
  • Redis实现

    • ZSet(Sorted Set):存储昵称和分数(名次)。
    • Hash:记录昵称和频率(HINCRBY user:frequency 昵称 1)。

6)HashTable 和 HashMap 的区别

对比项HashTableHashMap
线程安全同步方法(性能低)非同步(需手动加锁)
Null键值不允许允许
迭代器Enumeration(老式)Iterator + fail-fast
继承Dictionary类AbstractMap类

7)JVM 垃圾回收

  • 对象死亡判断:可达性分析(GC Roots不可达)。
  • 算法
    • 标记-清除(碎片问题)
    • 复制算法(新生代,Eden→Survivor)
    • 标记-整理(老年代)
  • 回收器
    • Serial:单线程,适合客户端。
    • Parallel Scavenge:吞吐优先。
    • CMS:低延迟(已淘汰)。
    • G1/ZGC:混合分区,高吞吐低延迟。

8)进程和线程的区别

维度进程线程
资源独立内存空间共享进程资源
切换开销高(上下文切换)
安全性隔离性好需同步(如锁)
通信IPC(管道、Socket)共享内存/变量

9)线程池的作用

  • 核心价值
    1. 降低开销:复用线程,避免频繁创建/销毁。
    2. 控制并发:通过队列和最大线程数防止资源耗尽。
    3. 管理任务:支持定时/延迟任务(如ScheduledThreadPool)。

10)内存泄漏的场景和解决方案

  • 场景
    1. 静态集合:如static Map未清理。
    2. 未关闭资源:数据库连接、文件流。
    3. 监听器未注销:EventBus未解绑。
  • 解决
    • 使用弱引用(WeakHashMap)。
    • try-with-resources自动关闭。
    • 工具分析(MAT查找GC Roots)。

11)OSI 七层模型

功能协议/设备
应用层HTTP/FTP/SMTP浏览器
表示层数据加密/压缩SSL/TLS
会话层建立/管理会话NetBIOS
传输层端到端通信(TCP/UDP)防火墙
网络层路由寻址(IP)路由器
数据链路层帧传输(MAC)交换机
物理层比特流传输网线/光纤

12)TCP 和 UDP 的区别

特性TCPUDP
连接面向连接(三次握手)无连接
可靠性可靠(重传、排序)可能丢包
效率低(头部大、延迟高)高(头部小)
场景文件传输、Web视频会议、DNS

13)TCP 可靠性保证

  1. 确认应答(ACK):接收方确认收到数据。
  2. 超时重传:未收到ACK时重发。
  3. 流量控制:滑动窗口调整发送速率。
  4. 拥塞控制:慢启动+拥塞避免。

14)数据库深度分页优化

  • 问题LIMIT 100000, 10扫描大量无效数据。
  • 优化
    1. 子查询WHERE id > (SELECT id FROM table LIMIT 100000, 1) LIMIT 10
    2. 游标分页:记录上次查询的ID(如WHERE id > last_id ORDER BY id LIMIT 10)。

15)联合索引场景和注意事项

  • 场景:多条件查询(如WHERE a=1 AND b=2)。
  • 注意事项
    1. 最左前缀:索引(a,b)无法优化WHERE b=2
    2. 字段顺序:高区分度字段放前面。
    3. 覆盖索引:避免回表(如SELECT a,b FROM table)。

松鼠 AI 牛友发过相关的暴雷帖子,我就不重复了。

程序员小白条的编程日记:https://xbt.xiaobaitiao.top/ (分享如何拿到腾讯实习 Offer 和多个中大厂的面试机会,大学经历、求职经历、职场工作、创作经历、生活日常、面经、技术分享)定期更新内容,成长打怪系列,分享从大一到大四的完整面经,看完可冲中大厂!dy同名程序员小白条,主要口述面试经历和分享我认为的实用网站,会比面经讲的详细很多,以真实面试录音为主!公粽号:程序员落叶

http://www.dtcms.com/a/315254.html

相关文章:

  • 【慕伏白】Android Studio 配置国内镜像源
  • Vue3核心语法进阶(Hook)
  • selenium4+python—实现基本自动化测试
  • PostgreSQL——数据类型和运算符
  • MySQL三大日志详解(binlog、undo log、redo log)
  • C语言的指针
  • 拆解格行随身WiFi技术壁垒:Marvell芯片+智能切网引擎,地铁22Mbps速率如何实现?
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • 深入剖析通用目标跟踪:一项综述
  • 关于如何自定义vscode(wsl连接linux)终端路径文件夹文件名字颜色的步骤:
  • 自学嵌入式 day 42 串口通信
  • 力扣热题100——双指针
  • 应⽤层协议HTTP
  • 个推1.0版本
  • 自动化测试工具Katalon之BDD
  • 鸿蒙开发-端云一体化--云数据库
  • Qt 自动无法加载数据库为空
  • 知识管理中的人工智能:概述、主要功能和管理工具
  • 专访 Giants Protocol 创始人:新加坡主权基金正式押注进军 RWA
  • 深入理解 mmap:原理、用法与实战全解析
  • Linux 进程间通信底层原理(1):匿名与命令管道
  • LLM Prompt与开源模型资源(4)提示词工程进阶指南
  • Node.js高并发接口下的事件循环卡顿问题与异步解耦优化方案
  • 抛出自定义异常
  • 普及冲奖——贪心补题报告
  • MySQL详解
  • Docker 和Docker-compose常用命令
  • STM32标准库的工程创建
  • 推荐广告搜索三种业务的区别
  • 非机动车乱停放识别准确率↑37%:陌讯多特征融合算法实战解析