美团面经整理

CPP

  • C++中内存泄漏哪些情况 说了三四个
  • new和delete的过程发生了什么?

OS

  • 线程的使用
  • 死锁的定义,为什么产生死锁
  • 多线程如何运行
  • 一个CPU运行多线程能提高效率吗?(看场景,CPU密集型的任务不适合,切换有损耗,IO密集的比较适合,可以让阻塞的线程切换下CPU)
  • 线程的状态
  • 死锁的情况
  • 手撕多线程死锁

NETWORK

  • ios七层模型,协议属于哪些层,http相关
  • HTTP和HTTPs的区别 HTTPs原理 SSL 证书 对称密钥(会话密钥) 非对称密钥
  • HTTP请求头部字段有哪些
  • HTTP 状态码 301和302 区别
  • Web请求的过程
  • ping ICMP协议 ping 的过程
  • TCP和UDP的应用场景 QQ聊天软件使用的协议是什么
  • ip协议的作用
  • tcp进行传输时怎么知道是哪个应用程序的请求
  • GET和POST的区别
  • HTTP状态码
  • 为什么需要三次 两次会出现什么问题 这个问题怎么解决 这里回答的不太好,只回答了两次握手可能因为时延导致服务器建立不必要的TCP连接,浪费了资源
  • 三次握手和四次挥手说一下。什么阶段最耗资源(内存?)回去再了解一下
  • UDP怎么才能实现可靠

DATABASE

  • mysql 索引介绍,增删改查命令,同步数据库(不会)
  • 数据库查询 更新 删除语句 inner join left join right join区别
  • 索引 使用场景
  • 数据库 查询语句
  • 索引 使用场景 数据库查询优化(有几亿条记录的表优化,分库,分表,按什么标准做划分标准)
  • 唯一索引和主键索引的区别
  • 数据库隔离级别
  • 可重复读和幻读是什么
  • 数据库索引的数据结构(b+树是啥样的),还有什么数据结构
  • 分页和分段的区别
  • 写sql语句 查找第一万页,每页十条,按时间倒序输出
  • 数据库表中重复字段怎么去除
  • fork join框架
  • 数据库索引联合索引的使用?(a, b, c建索引,讲了一下整个的索引顺序,B+树结构,先按照a排序,依次是b, c)

  • 索引优化
    create table sc_sales_sku { 
    id int(11), 
    name varchar(50), 
    sku_code int(11), 
    bu_id int(11), 
    sku_type tinyint(4),comment'只有3种情况' 
    create_time datetime 
    } 
    
  • 查询方式有四种分别建什么索引 sku_code sku_code + bu_id 联合索引 sku_type name like ‘%菠菜%’
  • 为什么只需要建立key(sku_code,bu_id)一个联合索引而不需要单独建立key(sku_code)索引
  • innodb索引的数据结构
  • B+树的性质
  • name like ‘%菠菜%’走不走索引
  • 怎么让上面的条件走索引(去掉前面的%)
  • 全文索引的作用
  • 事务的隔离级别
  • innodb默认是隔离级别
  • 4种隔离级别哪种性能最好
  • 怎么去优化sql

LINUX

  • linux命令
  • Linux命令 管道命令
  • top命令的显示内容,有哪些参数

  • 常用的命令?(ls, cd, top, ps, netstat, du, df, sed…我大概说了以下几个,最后总结了一句其实还有man用的很多)
  • Linux命令中管道符号?(实际是shell在为每一个命令创建一个进程的时候修改了打开文件列表,将上一个命令进程的标准输出设为下一个命令进程的标准输入)

ALGO

  • TOP N
  • 数组奇数在左、偶数在右
  • 数据结构相关,树,队列,链表啥的。
  • 快排
  • 对日志文件里的数据排序
  • 搜索日志文件里含有某字符串的语句
  • 前序遍历二叉树
  • 手撕快排
  • 一个二叉树,找所有根到叶子节点的路径,比如一条路径是1-2-4,则该路径的值为124,求所有路径的和
  • 红黑树
  • 一组元素,找到第k个数(第k小),用什么方法比较合适?(答了用小根堆,不满意,然后让分析用小根堆怎样实现,分析时间复杂度;接着问还有其他方法没,答用快排+二分的思想,分析时间复杂度)

  • 说一说list、vector、map、unordered_map的底层是用什么实现的,各自的插入时间复杂度的多少?(期间一直有引申,问了很多红黑树,说了对红黑树不熟悉,然后就问了下面的问题)
  • 大根堆/小根堆的插入时间复杂度是多少?为什么?
  • 如何解决哈希冲突
  • 排序算法知道哪些?哪些是稳定的,哪些是不稳定的?稳定和不稳定的区别?(答了概念上的区别和性能上的)除了性能还有吗?回去再了解下
  • 手撕代码:输入一个int型数字,判断是否是回文的

OTHER

  • 软件的生命周期,软件模型(本科软件工程的)
  • .思维题 a b 两个数比较大小 不能使用任何底层包含if的语句来输出最大的数
  • 链表找环,如果有环,找出环的入口。
  • 设计多线程下载一个1G文件