上海美团C|C++一面面经
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函数,但好像不是想要的答案。
8pthread_exit会调用析构函数吗(这个不太了解)
9,进程IPC机制,共享内存中多进程是怎么做到多个进行对同一块内存的安全访问的。
10, 线程局部变量需要注意什么,当时没有反应过来问的是thread_local,GG了
11.求一个整型数组的最大连续和,说了动态规划和转换方程,然后又问了还需要注意什么,说了下数组全负的情况及注意点。
12,linux命令介绍,说了一下自己用过的命令,被问了netstat怎么查看超时重传的(gg),然后聊了一下我在项目中如何使用tcpdump,又被问了tcpdump要和哪些工具结合使用。
13.shell编程,awk命令,讲了一些使用awk一般分为那几个部分(FS,begin,end,print),每个部分的格式。给我10行10列数据,都是以逗号分隔,其中第五列数据可能有重复的,统计第五列不同数据出现次数。说了一下大体思路,确实平常用的不太多。#美团##C++工程师#