一面:
自我介绍,项目介绍,
项目职责,
linux基本命令,
嵌入式开发,
多态的实现,
容器介绍,
数据结构,
手写代码,使用指针逆转字符串
对技术支持的理解,
指针和引用的区别,
指针与数组的区别,
static,
sizeof和strlen区别,
对出差的理解,
工作地点等等,
有什么想问的。
二面:
自我介绍,
项目介绍,
多态在项目中的作用,
static,
手写代码,使用指针在字符串A中查找B
一面:
自我介绍,项目介绍,
项目职责,
linux基本命令,
嵌入式开发,
多态的实现,
容器介绍,
数据结构,
手写代码,使用指针逆转字符串
对技术支持的理解,
指针和引用的区别,
指针与数组的区别,
static,
sizeof和strlen区别,
对出差的理解,
工作地点等等,
有什么想问的。
二面:
自我介绍,
项目介绍,
多态在项目中的作用,
static,
手写代码,使用指针在字符串A中查找B
编写shell脚本 查看一个文件,大小大于10M就删除,否则打印内容 不会,谢谢
core dump,出现段错误的原因
哈希表 如何实现 冲突解决
hash table用什么实现,最差插入时间复杂度
函数值传递一个百万个元素的vector会怎么样?为什么?
c 内存分布?
一个二维地图,每个格子有不同分数,求机器人从左下到右上的最大分数的路径。
求一个数组逆序对
三次握手四次挥手的状态字,为什么3次,为什么4次
求最大连续子数组
一次完整的http链接过程,应用层到数据链路层,越详细越好
http https区别
设计模式的了解,单例模式
成员函数的前后const
算法 最短路径
虚拟内存和物理内存的区别
进程线程区别?
谈谈项目中的多线程和线程池?
3、linux下如何快速将文件每行倒序输出?shell或者编程都行,说了下python和c++实现方法,结果人考的是tac命令
4、手撕代码-输出字符串中最长的回文子串长度?写完了不会优化
5、TCP-UDP区别?
描述四次挥手过程,以及timewait、closewait?
timewait过程如果出现过多拥塞或者网络不稳定导致很多非正常数据该如何解决?
linux下如何查看特定端口有多少tcp连接?
6、手撕sql查询排序?
如何通过索引优化该sql?
谈谈Innodb中b+树?myisam和Innodb中b树有什么区别?
7、了解数据结构?图如何表示?图广度遍历用什么结构?
1、char (*p) [] 、char *p[]、char (*p)()的区别?
2、熟悉设计模式?手写下单例模式?
3、手撕代码int atoi(char *str)?
4、谈谈web上访问网址的过程?
说说DNS如何找到ip和port的?若本地和局域网查找不到,如何向上层查找(DNS服务迭代查询和递归查询的流程)?
谈到socket通信,说说握手过程,为何三次握手?
谈到get、post了,get和post的原理和区别?
直到http和http2区别?
熟悉https,https中加密实在哪一过程进行了?
说说ssl加密原理?
5、说说select、poll、epoll区别?
6、熟悉句柄么?程序执行后句柄如何处理,如何修改可打开句柄数量?
7、数组存中在一个大于n/2次的数,如何以最优方法查找它?
8、用栈实现队列,用队列实现栈?
9、如何设计一个高并发的分布式服务器?
10、64匹马、8赛道,知识多少轮比赛找出速度最快的4匹马?(在提示下优化到12次,最优解为10或者11次)
1. 1G内存,4G url,求重复的url
2. 手写二分
3. Linux命令,find,grep,ps,netstat…
4. Python的tuple
5. C 与Cpp的区别
6. const/define
7. C语言内存布局
1.死锁是怎么产生的
2.有没有写过多线程?
3.调度算法有哪些?
4.三次握手四次挥手画图解释一下
5.UDP和TCP区别
6.HTTP和HTTPS介绍一下,区别是什么?
7.HTTPS的安全性是怎么实现的?
8.HTTP有哪几种操作?
他用什么来保证共享数据的安全性?
这个我说信号量,他说如果用信号量来解决,现在出现一个状况,两段进程都被标记为可以访问该共享数据,但我们的共享单元只能支撑一个进程访问。这时候怎么办?
我说用唯一标识符去处理。生成唯一标识符,这样就不会出现这种情况。
他说不对。让我回去好好看看。
回去查了一下,是原子操作。。
4.TCP端口扫描方式
5.TIME_WAIT、CLOSE_WAIT
6.守护进程
7.迭代器的++it和it++哪个好
我 balabala
我 balabala
1面面试官问得比较简单
1.const
2.static
3.写一个memcpy
装一下 讲了字典树和跳表
讲一些具体实现
后面就问tcp udp
线程进程
最后问了一个算法
象棋中马从A到B最短走几步
答bfs
问可否优化
想不出就说还是bfs 不过先建表算出来放表里存着直接查
2)linux下有哪些信号?
3)https中的pipeline?多个相同请求的时候一次返回
4)函数指针的作用?
5)如何实现一个非定长的结构体? -长度为0的数组(a[0])
8)linux io和标准io区别?
1)讲熟悉的项目,讲讲项目难点?
谈谈io复用,select?
谈谈项目共享内存实现方法?
2)linux 下编译调试方法,如何调试内存泄露问题?
3) 给几百万个网址,如何高效找出特定网址是否在其中?(布隆过滤器)
布隆过滤器优缺点,如何解决其缺点?
4)给一容量较大非法单词词典,如何判断某输入中是否有非法单词?
3.栈在实际编程的时候有哪些应用场景
4.广搜用什么数据结构
5.浮点数判断是否相等
6.手写代码 字符串反转 有时间和空间复杂度限制
7.手写代码 字符串循环移位 面试官让优化复杂度 没想出来(要用到上一题的字符串反转)
8.统计一篇英文文章出现频率最高的十个单词
9.new和malloc
10.智力题 4刀把一个圆柱形蛋糕切16块
11.实现strcpy,要考虑内存重叠和特殊情况处理
Q:象棋中马从一个位置跳到另一个位置的最少步数
A:手写BFS
Q:一次可以上一层台阶,也可以上两层台阶,到第N层有多少种走法
A:F[N]=F[N-1]+F[N-2]
Q:一分钟内经过公交车的概率为p,求三分钟内有公交车经过的概率
A:P=1-(1-p)^3
Q:strcpy和memcpy的区别
A:复制的内容不同,strcpy无需指定长度,遇到’\0’为止
Q:那strncpy呢?
A:我没用过
Q:你怎么判断两个struct相等?
A:我会选择重载==运算符,逐一比较成员变量是否相等
Q:那能不能用内存比较memcmp来判断呢?
A:不能,涉及字节对齐,可能有内存间隙,这里的值是随机的
Q:进程间的通信有哪些方式?
A:管道、有名管道、(信号、信号量、)共享内存、消息队列、socket
Q:epoll和select/poll的区别
A:epoll是实现I/O多路复用的一种方法,有水平触发(level trigger,LT,默认)和边缘触发(edge trigger,ET)两种工作模式,区别在于两种模式的返回就绪状态的时间不同。水平触发和select/poll的方式一样
epoll之所以高效,是因为epoll将用户关心的文件描述符放到内核里的一个事件表中,而不是像select/poll每次调用都需要重复传入文件描述符集或事件集。比如当一个事件发生(比如说读事件),epoll无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入就绪队列的描述符集合就行了。
Q:在TCP连接中,服务端的socket要做哪些?
A:socket->bind->listen->accept->send/recv
Q:堆和栈的区别?
A:堆是一颗二叉树、栈是一个单向进出的线性结构
Q:堆排序和快排的区别?
A:快排的思想是分治,每次选择当前范围的第一个数作为标杆,然后再将这个范围的所有比它小的数放到他左边,大的放到他右边,由这个标杆的现在位置划分出两个范围,分别对这两个范围的数再重复这样的*作,直到范围大小为1
堆排序则是在建堆的时候保证堆顶最小,然后每次取堆顶
下面应该是面试官自己出的一些题目
Q:XML是什么结构?
A:树
Q:用过正则表达式吗?写一个32位IP地址的正则
A:用过,忘记了不好意思
Q:进程和线程的区别?
A:这个没背,只回答上了几句话
1、第一个问题,怎样统计一篇英文文章中出现频率最高的10个单词,用什么数据结构和算法实现,因为是第一个问题,很紧张,答得有点语无伦次,面试小哥倒是忍了,跟我说不用说这么细,说个主要思路就可以了。
2、为找出一个字符串中第一次出现的指定字符,怎么优化算法。一脸懵逼,甚至想出了两端遍历的方式,然后小哥提醒我是第一次出现的。。。然后我就随口胡诌了一个。
3、结构体的比较问题,之前也有老哥说过。
4、根据主要用的编译环境,我是windows,他问了debug和release的区别,我就说一个会忽视ass断言一个不会(太激动还把断言说成了警告。。。)。然后又追问另一个问题,我都忘记是啥了。。。
5、main函数有没有返回值,分别针对什么情况。这个比较简单没啥好说的,然后他直接追问,那么如果出现异常,怎么捕获,然后我就懵逼了。。。
6、下一个问题更懵逼,问C++写的动态链接库能不能直接给C用,为什么。。。我就说,您既然这么问了,那肯定不能,但我也不知道为什么,因为平时使用的时候C++可以支持90%的C操作,然后就没有然后了。
7、问我有没有学过计算机网络,我说学院没开,做项目的时候用过,所以自学了一部分,然后面试官很贴心的问了个基础的问题,TCP的三次握手。这个应该都有准备过,然后又问了一下几次握手中,两端的状态转换,以及为什么两次握手不行。
8、最后问了一个关于C中宏定义的问题,前面老哥们有说过。