春招面经20届校招(C++/后端/软开/服务端)
背景:双非二本纯C语言,其他语言基本不会,秋招基本一面挂,春招面经,如果我没有往下写,说明我挂了。顺序不分先后,有些问题可能忘了,没有记录上。
秋招
绿盟:
1,二叉树的遍历,递归非递归
2,了解哪些网络攻击方式,附加问题:dos和ddos区别
3,怎么看待加班
4,介意出差吗
网易:
1,vector扩容机制
2,Nginx,redis相关问题
3,C++右值
4,编程题:最大连续子数组
5,MySQL数据库索引用的什么数据结构,为什么用B+数树不用别的
6,Shell命令,单[和双[[区别
7,poll,epoll,select区别
8,Map是有序的吗
字节跳动:
1,堆栈区别
2,下面出现有什么问题,怎么改进
void a(int * p)
{
Int i=2;
P=&i;
}
Int main()
{
Int *p=NULL;
a(p);
cout<<*p;
return 0;
}
3,数据库四种隔离级别,索引概念,出了一个索引题目,怎么建立索引
4,Linux命令,复制文件夹,查询某个文件的一些内容,比如统计a文件中xxx的数量
5,网络,tcp三次握手四次挥手,TIME_WAIT的2msl,以及tcp为什么可靠
6,编程题,最长不重复子串,超过两个不算重复
7,指针引用区别
8,new和malloc区别
春招
Thoughtworks:(挂)
当时提交简历,然后做完智商情商检测题吧,就收到了面试邀请。thoughtworks的面试先是给一个小作业,大概在面试前一天发给你,提交自己的想法和解法,不难,仔细想想能够解出来。大概两个小时左右吧,在一个类似于牛客的网站,把想法提交就好了。
作业面:
作业是关于一道无人机路径存储的问题,由于保密就不能细讲了。这个面试,根据你之前提交的内容,面试官会跟你讨论你的方案是否可行,然后还有建立相应的数据结构,就不是简单的嘴上说说,让人感觉到就算让你实际写代码,也能写出来的那种。虽然没有写代码。
终面:(两个人一起面)
①项目难点(还说了我的技术栈窄,因为我只会C)
②对公司了解程度
③为什么选择我们公司
吐槽:这个面试全程没有基础知识问答,thoughtworks好像以java和Python为主吧
深信服:(挂)
一面:
1,给你一个装有年龄的数组,找到第K大的年龄,数组中可能有重复年龄。异常输入可能是一共才10个人,要找到第100大的年龄的人
2,C++有什么缺点
3,父进程如何回收子进程
4,内存泄漏有什么办法解决
5,当前的网络体系为什么是这样的,为什么要分为7层结构5层结构
二面:
1,项目,收获
2,怎么学的(这里没答好,我说我看视频学的,应该答看书看博客看源码之类的)
3,C++最重要的是什么
4,爬楼梯
5,给了一个很大的文件,里面全是网站的url,求统计访问前十的url
6,手撕删除链表节点。(这里虽然题目做出来了,但是效率不是最高的,面完之后才想起来解法)
TCL:(挂)
一面:
1,项目
2,会不会网络编程
3,多态
4,C++11特性
HR面:
1,项目
2,最有成就感的事
3,什么时候能来(我说7月,这里应该说两周内就好了)
4,参加的社团活动
虾皮:(挂)
他们公司好像偏向于Python和go,少量java,没有C。
一面:
1,进程在Linux下的内存的分块,各分块的作用
2,进程和线程的区别
3,进程的生命周期的状态,各个状态怎么切换的
4,进程的通信方式,各个通信方式有什么优点
5,Tcp/ip协议簇各层的作用
6,我们视频面试可能用到什么协议
7,HTTP分包
8,HTTP报文有什么
9,HTTP状态码
10,HTTP的session的了解
11,MySQL的聚簇索引和非聚簇索引
12,MySQL的索引用了什么数据结构
13,为什么索引用了B+树
14,给个SQL语句说出它的执行顺序
{
Select sex,count(name) from test_tab where age>20 group by sex;
}
15,LRU的实现,说说想法
16,一个很大的文件,有一千万个单词,文件每一行有一个单词,说出如何找出前topk个单词
17,稳定的排序算法有哪些
二面:
1,二分查找的复杂度
2,C++继承和组合
3,广度优先和深度优先
4,堆排序和快排时间复杂度
5,三次握手
6,C++多态
7,项目
8,项目的安全性
广州速游:(挂)
广州速游是先HR面,再技术面。
HR面:
1,主要语言是什么
2,是否接受大小周
3,期望薪资(我说至少8k)
4,是否接受转语言erlang,有专门导师培训
5,你对于服务器开发方面有什么优势,对服务器开发的了解(这个问题把我问懵了,当时随便答了一下)
6,春招秋招拿的offer
WPS:(offer)
一面:
1,new和malloc区别
2,0~10亿元素插入(位图)
3,vector和list区别
4,RGB颜色存在一个文件中,取出出现频率前十数量的RGB颜色
5,map和hashmap的区别
6,Class A{
Public:
A(){}
void init(){}
~A(){}
};
Class B:public A{
B(){}
void init(){}
~B(){}
};
A *a=new B;
几个小问题:
①、B构造的执行顺序是什么样子的
②、在B的构造里调用init函数是调用谁的
③、如果A的init函数声明为virtual,在B的构造里调用init函数是调用谁的
④、a如果调用init是调用谁的
⑤、如果A的init函数声明为virtual,a如果调用init是调用谁的
7、void function()
{
Begin();
//***
//在functio中间可能调用return或者抛出异常打断function函数
//***
End();
}
现在有一个需求,我如果调用begin函数,就必须调用end(),如果做才能不被打断,保证end函数一定能执行。面试官给出的建议是在栈上定义自定义类型的变量,在析构函数中调用End函数,保证End函数100%执行
二面:
1,虚函数怎么调用的
2,子类想在构造函数中调用自己的虚函数,怎么办
3,指针和引用
4,结构体定义一个引用,结构体大小
5,结构体和类的区别
6,List和vector
7,Map和hashmap
8,项目难点
9,寻找树的深度
10,反转链表
11,优先队列怎么实现,除了使用堆
12,一个大的二维表格,类似于一个二维数组,但是数据结构不一定使用数组
主要的操作:①给你行和列,也就是位置,以及数据,我往二维的表格中存储数据如字符串
②给你行和列,也就是位置,我从二维的表格中读取数据
内存限制:①由于内存空间有限,你不能把二维表格的每一个变量都初始化,比如行和列的长度都是long long的极限长度
②用户的存入表格的所有的数据,内存恰好能够装下,注意恰好两个字。当然,函数的一些操作之类的,内存也能装下
要求:①我给你行和列,我能够正常读取和存入
②我想遍历某个范围的数据,比如(1,1)到(100,100)
③我想按照列遍历某个范围的数据
④我想按照行遍历某个范围的数据
⑤我想遍历一块矩形的区域的数据,当然,我把矩形的位置大小都给你,你返回结果集
⑥假设我只访问我存过的数据,没有存过的数据我不访问
问题:设计一种数据结构,满足上述要求
HR面:
1,项目
2,期望工作地点
3,期望薪资
4,前面有什么面的不好的地方
5,了解WPS主要开发什么吗
6,手里的offer情况
奇安信:(offer)
一面:
1,项目。
2,互斥量和条件变量
3,多态。
4,如果基类的析构函数不是虚函数,怎么办
5,C++调用c的函数怎么做
6,Hash表
7,Linux中过滤掉文本的命令
8,Linux下的IO复用模型
9,多线程多进程
10,怎么学的
11,僵尸进程
12,父进程注册了wait,回收了子进程,但还是出现僵尸进程
13,段错误及其调试,Core文件大小怎么调
二面:
1,五层网络模型
2,我是服务端你是客户端,我给你发了一段数据,我的seq是100,你应该回我ack多少(假设已经建立了三次握手,现在给你发了一段数据)
3,Redis分布式锁
4,Redis进程模型
5,HTTP协议
6,手撕代码,洗牌算法:
输入:一个int数组,存放了1~54共54个数字
输出:将这个数组随机打乱后返回
7,你写一段helloworld出现,如何从代码变为程序最后再打印到屏幕上的?(操作系统调用了一次IO,打印IO,操作系统触发一次IO中断,中断告诉外设去某些地方拿字符串,把它打印到屏幕上,让具体的外设拿到这个东西)
8,进程用什么命令看
9,Socket编程主要大的步骤
10,accept拿到了客户端的套接字,read的时候报错,是什么原因导致的呢?时不时报错。(tcpdump把输出写到文件,再拿到Windows上去分析,直接上tcpdump分析,能看出是网络问题还是服务问题还是客户端问题,如果是我服务的问题,通常情况下,服务端会发生一些ret或者fin的包,或者数据还没传输完就发送fin的包,如果是客户端的问题也会发ret或者fin的包,或者客户端很长时间没有发起连接,没有seq也没有ack,这个时候服务端也会主动发起fin或者ret,分析这个fin或者ret的顺序就能看出来)
HR面:
1,项目怎么做的
2,实习经历
3,怎么学的
4,最有成就感的事情和最有挫败感的事情
5,想做技术专家,还是管理者,还是产品,为什么
#校招##深信服##金山WPS##面经##TCL##奇安信##Shopee#