美团AI面经

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

题型

6 + 2:6 个技术基础知识考察题及 2 个通用能力考察题

面经

  1. TCP 与 UDP 的使用场景,以及区别
    • TCP 是面向连接的、可靠的传输协议,适用于数据准确性和顺序性的使用场景,如文件传输、邮件发送等。
    • UDP 是面向无连接的、不可靠的传输协议,适用于实时性要求高的使用场景,如视频直播、语音通话等。
  2. Linux 如何排查与诊断端口问题
    • netstatlsofpsss等命令
    • netstat -tunlp查看端口占用情况
    • lsof -i:端口号查看端口占用的进程
    • ps -ef | grep 进程名查看进程详细信息
    • ss -tunlp查看端口占用情况
    • kill -9 进程号强制杀死进程
  3. java 中 static 与 final 的作用
    • static用于修饰类、方法、变量,表示静态的,属于类的,可以通过类名直接访问。
    • final用于修饰类、方法、变量,表示不可继承、不可重写、不可修改,常用于常量、单例模式等。
  4. ArrayList 与 LinkedList 的区别与使用场景
    • ArrayList基于数组实现,查询效率高,增删效率低,适用于查询频繁的场景。
    • LinkedList基于链表实现,查询效率低,增删效率高,适用于增删频繁的场景。
  5. 数据库查询优化器有什么作用
    • 数据库查询优化器负责解析 SQL 语句,生成查询计划,优化查询性能。
    • 通过索引、统计信息、执行计划等手段,选择最优的查询路径,提高查询效率。
  6. 设计一个排行榜功能,如何设计数据结构与内存策略(如何保证数据一致性以及实时性)
    • 使用有序集合存储排行榜数据,如 Redis 的ZSET
    • 使用 Redis 缓存+定时任务或消息队列更新排行榜数据,保证数据一致性和实时性。
  7. 如何与最新的技术与时俱进,通过什么方式学习,各有什么优缺点,并根据你的回答引申出去
    • 通过阅读官方文档、博客、书籍、实践项目、参加技术交流会议等方式学习。
    • 优点:及时了解最新技术、拓展视野、提升技术能力。
    • 缺点:信息量大、更新快、深度和广度有限。
  8. 项目中遇到什么问题,如何解决的,并根据你的回答引申出去
    • 项目中遇到的问题:如性能瓶颈、安全漏洞、数据丢失等。
    • 解决方法:如优化算法、增加缓存、加强安全防护等。
  9. 未来 3 年的职业规划
    • 夯实技术基础、进阶技术架构、提升管理能力、拓展业务视野等。
    • 第一年:熟悉公司业务、技术栈、团队合作等。夯实技术基础、提升编程能力、熟悉业务流程等。
    • 第二年:深入研究技术领域、参与项目设计、解决技术难题等。进阶技术架构、提升团队协作、拓展业务视野等。
    • 第三年:担任技术负责人、项目经理、架构师等职位,负责项目规划、团队管理、技术选型等。提升管理能力、拓展业务视野、实现职业目标等。

作者:Mia_san_mia_mia_san_mia
链接:https://www.nowcoder.com/feed/main/detail/5dbe9855b7bd4e688763d59cbbc30653?sourceSSR=search
来源:牛客网


  1. TCP 与 UDP
  2. string 类可不可以被继承?为什么
    • String类是final修饰的,不可被继承,防止被修改。
    • String类是不可变的字符串,提高字符串的安全性和性能。
  3. 修改用户权限和所有权的命令是什么
    • chown修改文件所有者
    • chmod修改文件权限
  4. 设计一个预约系统,会考虑什么
    • 预约系统需考虑用户需求、时间段、资源分配、冲突处理等。
    • 可以使用数据库存储预约信息,使用定时任务处理预约逻辑。
    • 可以使用消息队列处理预约通知、提醒等。
    • 可以使用缓存存储热门预约信息,提高查询效率。
    • 可以使用分布式锁处理并发预约问题。
  5. 如何实现预约时间段的细化
  6. 平时是如何学习新技术的,通过哪些方式?(我说了 ai,追问如何使用 ai)
  7. 项目短期实现和长期维护之间的平衡
    • 在软件开发中,短期目标通常是快速交付,确保项目按时上线;长期目标是稳定、可扩展、易维护。
  8. 未来三年的发展规划

作者:明朝老兵在线背八股
链接:https://www.nowcoder.com/feed/main/detail/6d302a6b7d2e44f99036e45c5d3db4ef?sourceSSR=search
来源:牛客网


  1. TCP 与 UDP 的使用场景,以及区别
  2. Linux 查看文件的内容,列举至少 3 个相关命令
    • cat查看文件内容
    • more分页查看文件内容
    • less分页查看文件内容
    • head查看文件头部内容
    • tail查看文件尾部内容
  3. 解释一下三大日志以及区别
    • INFO信息日志,记录程序正常运行的信息
    • WARN警告日志,记录程序可能出现问题的信息
    • ERROR错误日志,记录程序出现错误的信息
  4. 如何创建和启动一个线程
    • 继承Thread类并重写run方法
    • 实现Runnable接口并实现run方法
    • 使用ExecutorService线程池
  5. 解释 Java 中的构造函数,构造函数能够重载吗
    • 构造函数是类的特殊方法,用于初始化对象
    • 构造函数可以重载,但不能被继承
  6. 设计文章热度计算系统考虑浏览量、评论数和分享数等因素
  7. 各自的权重分数如何考虑的
    • 浏览量、评论数、分享数等因素可以设置不同的权重,如0.30.50.2等。
    • 可以使用加权平均法、加权求和法等计算热度分数。
    • 可以使用缓存存储热度数据,提高查询效率。
  8. 如何与最新的技术与时俱进,通过什么方式学习,各有什么优缺点,并根据你的回答引申出去
  9. 项目中遇到什么问题,如何解决的,并根据你的回答引申出去
    • 高并发下数据库压力过大,导致性能下降
      • 使用 Redis 缓存热点数据,减轻数据库压力
      • 使用分库分表、读写分离等方式优化数据库,读操作和写操作分离,读操作走从库,写操作走主库
      • 使用消息队列异步处理数据,提高系统吞吐量,用户下单时,先将订单信息写入消息队列,后台系统异步消费消息,生成订单
  10. 未来 3 年的职业规划

作者:presbyterwar
链接:https://www.nowcoder.com/feed/main/detail/ed1f9ce71510442b90f92240224c9b5e?sourceSSR=search
来源:牛客网


  1. threadlocal
    • ThreadLocal是 Java 中的线程本地变量,每个线程都有自己的ThreadLocal变量,互不干扰。
    • ThreadLocal提供了getsetremove等方法,用于存储线程私有数据。
    • ThreadLocal常用于解决线程安全问题,如数据库连接、Session 管理等。
    • ThreadLocal的内存泄漏问题,需要注意及时清理。
    • ThreadLocal的原理是通过ThreadLocalMap实现,每个线程都有一个ThreadLocalMap,存储ThreadLocal变量。
  2. linux 端口命令
    • netstat查看网络状态
    • lsof查看打开的文件
    • ps查看进程信息
    • ss查看套接字信息
  3. 数据库分区表
    • 数据库分区表是将一个大表按照某种规则分成多个小表,提高查询效率。
    • 数据库分区表可以按照时间、范围、哈希等方式分区。
    • 数据库分区表可以减少单表数据量,提高查询性能。
    • 数据库分区表可以减少索引大小,提高索引效率。
    • 数据库分区表可以减少锁竞争,提高并发性能。
  4. 第三方支付接口超时怎么对账监控,接口的幂等性和重复多次下单
    • 使用定时任务或消息队列监控支付接口超时情况,及时处理异常订单。
    • 使用幂等性机制保证接口的幂等性,避免重复下单。
    • 使用分布式锁处理并发下单问题,避免重复下单。
  5. 未来三年职业规划
  6. 项目人员资源缺乏人员紧缺的时候怎么应对举个例子
    • 项目人员资源紧缺时,可以通过招聘、外包、培训等方式解决。
    • 项目人员资源紧缺时,可以通过技术分享、团队合作等方式提高团队效率。
    • 项目人员资源紧缺时,可以通过项目管理、任务分配等方式合理分配资源。
  7. 怎么学习一个新的编程语言或框架 追问怎么用的 接着又对上面回答进行追问
    • 学习新编程语言或框架可以通过阅读官方文档、博客、书籍、实践项目等方式。
    • 学习新编程语言或框架可以通过参加技术交流会议、培训课程等方式。
    • 学习新编程语言或框架可以通过实践项目、开源项目等方式。
    • 学习新编程语言或框架可以通过编写代码、调试代码、提交代码等方式。
  8. 粘包问题怎么解决
    • 粘包问题是 TCP 协议中常见的问题,多个数据包粘在一起发送。
    • 可以通过消息定长、消息分隔符、消息长度字段等方式解决粘包问题。
    • 可以通过 Netty 等网络框架解决粘包问题。
    • 可以通过自定义协议解决粘包问题,如 HTTP 协议、WebSocket 协议等。
  9. hashcode 和 equals
    • hashCodeObject类的方法,用于计算对象的哈希码。
    • equalsObject类的方法,用于比较对象的内容是否相等。
    • hashCodeequals方法通常需要同时重写,保证对象的一致性。
    • hashCodeequals方法通常需要保证一致性,即相等的对象哈希码相等,哈希码相等的对象不一定相等。

作者:evakkkkkk
链接:https://www.nowcoder.com/feed/main/detail/d22c0184223a4dd887f9979503daf4cf?sourceSSR=search
来源:牛客网


技术题

  1. HTTP 请求头和响应头都有什么,分别有什么作用?描述从输入 url 到页面展示的完整过程。
    • HTTP 请求头:包括请求行、请求头、请求体,用于向服务器发送请求信息。
    • HTTP 响应头:包括状态行、响应头、响应体,用于向客户端返回响应信息。
    • 输入 URL 到页面展示过程:DNS 解析、建立 TCP 连接、发送 HTTP 请求、服务器处理请求、服务器返回响应、浏览器渲染页面。
  2. Linux 内存管理,物理内存和虚拟内存区别和作用?Linux 用什么命令来修改文件的所有者或组?
    • 物理内存是实际的内存条,虚拟内存是操作系统为每个进程分配的内存空间。
    • 物理内存是硬件资源,虚拟内存是操作系统资源。
    • 物理内存是实际存储数据的地方,虚拟内存是操作系统管理内存的抽象概念。
    • 修改文件所有者或组的命令:chown修改文件所有者,chgrp修改文件组。
  3. Java 中的 ThreadLocal?Java 在 finally 中 return 会发生什么?解释 volatile 关键字及其作用?
    • ThreadLocal是 Java 中的线程本地变量,每个线程都有自己的ThreadLocal变量,互不干扰。
    • finallyreturn会先执行return语句,然后再执行finally块中的代码。
    • volatile关键字用于修饰变量,保证变量的可见性、有序性、禁止指令重排序。
  4. Java 中的多态?如何实现多态?
    • 多态是指同一个方法调用,不同对象产生不同的行为。
    • 多态实现方式:方法重载、方法重写、接口实现、继承父类等。
  5. 暂时忘了
  6. 电商系统如何设计什么什么的逻辑,解决超卖问题(会追问)
    • 电商系统设计:用户注册、商品展示、购物车、下单、支付、物流、评价等。
    • 解决超卖问题:使用分布式锁、乐观锁、悲观锁、队列等方式解决。

通用题

  1. 你认为在软件开发领域当中应该提升什么核心能力?你有什么提升计划?有没有什么指标来衡量你的提升效果?有没有用什么工具来帮助你提升?(追问)
  2. 在你的项目中遇到了什么复杂的问题,你是怎么找到它的根本原因的?(追问)
  3. 未来三年的职业规划?

作者:清风徐来___ 链接:https://www.nowcoder.com/ 来源:牛客网


技术题

  1. TCP 和 UDP 的使用场景和区别?
  2. linux 中 Pineline 的是什么?具体使用场景?
  3. 数据库中判断索引的性能?
  4. 忘记了
  5. String,StringBuffer,StringBuilder 的区别?
  6. 简单的网页搜索功能,如何设计?(追问)

通用题

  1. 你认为在软件开发领域当中应该提升什么核心能力?你有什么提升计划?有没有什么指标来衡量你的提升效果?有没有用什么工具来帮助你提升?(追问)
  2. 在你的项目中遇到了什么复杂的问题,你是怎么找到它的根本原因的?(追问)
  3. 未来三年的职业规划?

作者:我

Common Resources for Materials Calculation