面试复盘 | 美团 成都 后端开发一面面经
8.8日发的笔试 笔试全A 8.16收到电话 8.17面试 部门为无意向
- 常规的自我介绍,包括做过的项目
- 介绍项目技术栈
面试官主JAVA 我主要是C相关
当时我就感觉拉闸无了 - 传输层协议
基本都是基于IP协议族比如TCP UDP协议 - TCP报文投格式
这边大概说了五元组 协议号 SYN ACK FIN 校验和等 - Close_wait状态
服务端收到客户端发出的FIN 更变为close_wait状态
这里扩展讲了4次挥手 - TCP如何保证可靠性
1.连接时可靠 三次握手过程
2.传输时可靠 拥塞控制
3.结束时可靠 四次挥手过程 - 拥塞控制过程
4中算法 慢开始 拥塞控制 快重传 快恢复 - 滑动窗口
滑动窗口通俗来讲就是一种流量控制技术。
它本质上是描述接收方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。
这里基本没有说好,应该结合拥塞控制过程说 - 网络编程建立过程以及listen
这边主要说socket建立过程 - 计算机读取文件过程
这里说了系统调用 系统中断和用户态 内核态系统拷贝
其实面试官想考的时IO复用。 - 系统怎么处理多个文件同时读写一个文件。
我这里说了一会儿锁 还是想考IO复用 - epoll介绍一下
介绍selet poll epll
扩展epoll与selet的最大区别 以及epoll的两种模式 - 数据库会吗?
不会 - 数据库索引
B+树 - Redis会吗?
不会 - 1 设计一个数据结构O(1)插入 删除 查询 保证先入先出 优先级高优先
说了双向链表 但是插入得o(n) - 2 优先级个数很小
桶排的方式遍历 - 3 怎么存储
优先级为key 线程id为value - 4 优先级相同怎么处理先入先出
类似处理hash冲突的拉链发 - 刚刚说到了hsah冲突,怎么解决hash冲突
- 拉链法
- 再hash法
- 创建公共益出区
- 开放地址探测法
这里我只答对了前两个
- 红黑树与AVL树的区别
基本就是介绍深度和红黑节点 - 红黑树与AVL树最大旋转次数
这里没答好 没有考虑AVL删除最坏删除根节点需要log(n)次旋转 - 1 红黑树与AVL树的应用场景
增删多红黑 查询多AVL - 2 为什么?
旋转方式导致的 这里面试官给我说了AVL的最大旋转 - 1 vector扩容机制
首先说了底层是数组,vs下1.5倍 gcc下是2倍 - 2 缩小机制
第一次听说缩小机制,我就按照vector删除中间迭代器,然后内存区域发生改变,后面整体前移。 - JAVA会吗?
只会一点基础的语法。 - 一道智力题
- 一道中等难度的算法题
反问: - 部门
to b,主要是个商家对接的 - 您这边主要JAVA,我这边技术储备都是C/C++,您看我这边后续需要学习哪些?
美团会有专门的培训,不用担心语言问题。 - 您有什么建议
基础挺好的,一些应用中间件可能需要看看。 - 多久能有消息
一般5个工作日,会有hr反馈给你。
一些值得商榷的问题,求大佬解答
- vector缩小机制 第一次听说这个
2 设计一个数据结构O(1)插入 删除 查询 保证先入先出 优先级 这个结构设计的问题
复盘:
面试官说成都这边大多还是java开发比较多,可能C/C++的岗位较少,看了我的简历基本都是问一些操作系统,计算机网络、数据结构相关的一些知识,后续自己得补一补数据库相关的一些知识,总体来说引导得超级棒,不会的也不会过多的纠结这个地方,许愿二面!