百度,美团,鼎信,涂鸦面经
8.12 百度运维部共三面(offer)
1.自我介绍
2.聊项目
3.epoll和select的区别,epoll两种触发方式,踩过那些坑
4.讲讲reactor模式(结合muduo来回答)
5.OSI七层模型,每一层的作用是什么,tcp和udp的区别,tcp如何保证可靠性,三次握手和四次挥手过程
6.多线程和多进程的区别,进程间通信方式,无名管道和命名管道的区别,共享内存的实现方式,线程同步方式。进程和线程独有的是什么。
7.mysql数据库优化方式,工作原理
8.二叉树之字形打印
9.给定一个整型数组和一个数sum,在数组中找到两个数之和等于sum的所有数据对
10.求一个整型数组的最大连续和
11.海量数据求中位数
12.hash,hash冲突,rehash的增长方式,一致性哈希
13.快排有哪些优化(三数取中,重复放中,STL中的排序手段);数组TOPK,时间复杂度
14.epoll底层实现,项目中时间设置为多大,超时时间是否精确。红黑树的性质,元素插入和删除哪个更复杂
15.B+树和B树的区别,数据库索引用哪一种,为什么?
16.慢启动和拥塞避免
17.arp协议
18.TCP粘包问题,心跳机制
19.为什么要自己实现http服务器而不是借助现有的nginx
20.Linux命令find的使用
21.项目开发中印象最深的一件事
22.在项目开发过程中最受不了的是什么
23.对bat三个公司的看法
24.工作城市的看法
25.平常通过什么手段学习,看过那些开源项目
26.非CS专业,报这个岗位是因为技能符合,项目符合还是其它原因
一共三面+笔试,前两面纯技术,第三面部门经理面,技术人生一半一半,笔试不算难。
8.28 涂鸦移动(offer)
1.八大排序算法挨个过了一遍(复杂度,实现过程,优化)
2. 给定一个整型数组和一个数sum,在数组中找到两个数之和等于sum的所有数据对,如果给定的数组是排序的有什么优化方法
3. 判断链表有环及入环地址
一共两面,一直在问数据结构算法,其他的一点没问,还有一些题记不清了,工资略低。
9.5 多益网络(面试挂)
1.1分钟自我介绍
2.指针和引用的区别,引用需要释放内存吗
3.栈溢出
4.知道哪些跨平台技术
5.同步和异步的理解
6.百度地图,高德地图实时路况是怎么形成的
7.5分钟内完成代码:字符串中对于连续的空格只保留1个
8.IQ测试是正常情况下完成的吗(估计是太差了,当时想不起来了什么情况下做的,就说了正常)
9.对于互联网加班的看法?
10.目前找工作情况。
9.7 鼎信C++(offer)
一面:
1.自我介绍
2.项目介绍
3.HTTP在第几层,长连接短连接?怎么保持状态的
4.TCP,UDP区别
5.mysql事务的性质,原子性举例,持久性是什么意思
6.智能指针的底层实现
7.虚函数的底层实现
8.生产者消费者模型
二面和Boss聊人生谈理想
美团点评(offer)
一面:9.10 44分钟(电话面)
1.因为我主要熟悉C++,面试官是受别人委托面我的,没有看过我的简历,说明情况后开始让我进行自我介绍(会不会草率了点….)
2.聊一下#define的特点,说了一下预处理进行替换及define的优缺点,当多处使用同一个值使用define进行一次替换就行,函数也可以做到一次替换,为什么用define不用函数,在debug版本下需要改变ifdef用make的哪个命令。
3.聊一下static,主要分为C和C++分别讲述了一下(文件作用域,内存分配,函数内部生命周期,C++中成员函数和成员变量,this指针,初始化位置等)
4.三次握手过程和相应状态,在可以ping通接收方的情况下接收大量的ACK是什么原因,TCP的超时定时器可以手动设置吗?
5,讲一下CS模型一般用到那几个函数,每个函数都有哪些参数设置,客户端和服务器的bind是否必须?
6.因为自己实现了一个http服务器,大概描述了一下项目,提到了epoll, 让讲一下epoll, 什么是多路IO复用,epoll的边沿触发和水平触发,用边沿触发一般会遇到什么问题,该怎么解决?
7.linux多线程和多进程的区别,调用fork后父子进程共享哪些资源,fork之后父进程修改的内容子进程也会改变吗? 子进程修改的值父进程也会改变吗?聊一下写时复制技术?Fork子进程时父进程一般需要做什么,如果不用wait进行回收会出现什么情况,init进程是自动回收孤儿进程吗?我在回答wait的时候说了一般fork之前用signal函数,在signal中调用wait或者waitpid,被问了除了信号还能使用什么手段,答了kill函数,但好像不是想要的答案。
8.pthread_exit会调用析构函数吗(这个不太了解)
9.进程IPC机制,共享内存中多进程是怎么做到多个进行对同一块内存的安全访问的。
10.线程局部变量需要注意什么,当时没有反应过来问的是thread_local,GG了
11.求一个整型数组的最大连续和,说了动态规划和转换方程,然后又问了还需要注意什么,说了下数组全负的情况及注意点。
12.linux命令介绍,说了一下自己用过的命令,被问了netstat怎么查看超时重传的(gg),然后聊了一下我在项目中如何使用tcpdump,又被问了tcpdump要和哪些工具结合使用。
二面 9月18日 现场面 40分钟
1.按照惯例自我介绍
2.三个项目挨个说一遍,每个项目的难点,技术细节都会过问
3.tcp和udp的区别,tcp如何保证其可靠性
4.拥塞避免的理解
5三次握手四次挥手全过程
6.epoll的底层实现,和select和poll的区别
7.tcp的最大报文段长度(隐约记得65535字节),ip分片过程,如何实现把一个报文不分片一次性传输
8.手写代码一个字符串char *p="key1=value1&key2=vaule2&key3=value3",将字符串的key和value以键值对存在map中
三面 9.18 现场面 1小时
三面面试官一看就是个boss,问技术问题一直很严肃
1.撸代码,找出一个字符串中只出现一次的字符,返回下标
2.红黑树有哪些具体应用(答了map,epoll)
3.谈项目,因为用到了epoll,让讲一下epoll的原理,epoll,select,poll的区别
4.tcp四次挥手,拥塞避免
5.项目中用到了md5,sha1,讲了一下性质
6.指针和引用的区别
7.new和malloc的区别
8.mysql有哪些索引,原理及分别应用在哪些场景中,聚簇索引和非聚簇索引的原理
9.事务的四种隔离级别,每种隔离级别分别解决什么问题,默认是哪种,哪种最好,问什么?
10.百度搜索一个字符串,是怎么把以这个字符串为前缀的其它字符串找出来(说了一下字典树,然后让讲字典树的原理和实现过程)
11.美团app首次登陆需要发验证码,以后的访问不需要了,是怎么实现了(回答不知道,然后说猜一下,原理可能类似cookie和session,接着讲了一下这两者的原理,接着被问了如果采用cookie,别人抓取到了包是不是可以黑掉你的账户,应该采取什么措施,不清楚,但是balabala说了下自己的看法,session存在服务端的内存中,内存过大咋办,答采用内存,ssd,机械硬盘加上分布式)
12.形参加const优点。
13.内存四区
14.vector的扩容原理
腾讯霸面 9.21上海
自我介绍
三个项目挨个问,画流程框图
手写一个完整的epoll模型
会用哪些数据库
实现一个函数,一个float数组,利用数组首元素除以后面的每一个,返回结果
听说你拿了**offer,是什么部门
总结:这个霸面机会来的太不容易,过程很曲折,等到晚上8点半才面的,最后面试官说明天应该会有二面,但是结果还是挂我了。
看过的资料主要包括以下一些:
传智播客视频:(C++基础,C++进阶,C和C++数据结构,六天带你玩转MySQL,linux服务器开发三-网络编程,Unix编程)
书籍:C++ primer,effective C++,STL源码剖析,现代操作系统,程序员代码面试指南,linux多线程服务端编程,tcpip详解1,mysql技术内幕:innodb存储引擎,高性能mysql,Unix环境高级编程,算法导论(这个啃不动,看了不到三分之一),深度探索C++对象模型,C++11新特性解析与应用(看了一点),鸟哥的私房菜,linux网络编程
Github:找了tinystl, tiny http,看完重写了一遍,受益很大,看了larbin源码,muduo源码,基于这两个实现了两个小项目。另外libevent看了一点。
博客:陈硕,陈皓,廖雪峰,陶辉。博客里面有一些工具,比如GDB,Makefile,git的使用很详细。
目前在学分布式,有懂这块的大佬可以私信我,带带我入门(目前在看Google三宝,raft,paxos, zookeeper,rpc)
#百度##美团#