基础知识总结-tx
  • √ 单向链表反转
  • √ top K 问题
  • 红黑树,AVL数,B+, B-树等的区别。
  • √ 希尔排序
  • 二叉树改平衡树
  • √ C++11的智能指针
  • √ 跳表
  • boot loader。
  • √ 进程的状态转换图。
  • √ 进程间通信的方式。
  • 内核态和用户态的区别,为什么要这样划分,如果不这样划分你觉得理由是什么。
  • √ 知道的几种设计模式。
  • √ 多态用什么实现(虚函数),虚函数是怎么实现的
  • √ 析构函数为什么要定义为虚函数
  • 检测网络不通并解决该问题,用到哪些命令
  • 一台主机连接到另一台主机,需要经历哪些协议,这些协议的作用是什么
  • √ 有哪些复杂度为nlogn的排序算法,说一下归并,快排,希尔排序的原理
  • √ 一个整型数组,找到两个数和为10000的有多少对。
  • √ 算法设计里面有哪些策略(分治,回溯法,动态规划,贪心,分支界限)
  • √ 用一个例子介绍一下动态规划。只记得这么多了。
  • √ TCP和UDP的可靠性UDP能不能传送很大的数据比如视频?
  • √ 三次握手的细节
  • 数据库增加一个属性sql语句怎么写
  • Nosql型数据库有什么特点
  • √ 红黑树
  • √ 1000个苹果放10个箱子,怎么放可以使得需要任意个苹果,都能整箱给出。
  • √ 如单链表逆序
  • √ epoll的2种模式等等。
  • √ c++方面的基础知识,比如虚函数,内联函数,重载等等。
  • 不使用系统格式化能力,自己写一个方法格式化整数,返回字符串。char * int2str(int i){}
  • √ 使用少量内存,可以使用磁盘协助,找出10几G大的QQ登录文件中登录最大的几个号码。
  • √ 类模板,虚函数,stl模板库,类的继承,堆栈的管理等等。stl问了set,vector等的存储。
  • √ 有一个项目写的是学生信息管理系统,面试官拿出来一张纸,让我画这个项目的ER图(数据库ER图)。
  • √ 迭代器不能用与哪种容器?或者哪些情况下不能使用迭代器?(问题3)常见排序算法的时间、空间复杂度,以及稳定性?
  • TCP的MTU(最大传输单元)是?
  • √ epoll与select相比有什么优点?(考察IO复用)
  • √ Linux如何查看系统版本?(考察linux基本命令)
  • √ 问进程与线程的区别。
  • √ 问虚函数是怎么实现的
  • √ 内核是如何将内核缓冲区里面的数据写到磁盘上的?
  • √ 链表逆序;
  • √ 海量数据存储,读写,负载均衡;
  • √ 字符串的拷贝,
  • √ 指针加减;
  • √ 海量数据TOPK问题。
  • √ 链表找环
  • √ 二叉树镜像
  • √ C++深复制浅赋值几个
  • √ 两个单链表判断是否相交
  • √ redis
  • TCP三次握手和四次挥手的过程,滑动窗口协议,默认字节数大小端connect,accept的返回
  • √ O(n)内一个数组找最大和次大数
  • √ mysql的索引、主从备份等问题
  • √ 问linux的信号和进程间通信
  • √ 旋转字符串的算法实现
  • 如何在众多的数据量里面去重
  • √ 比如TCP如何保证可靠传输、epoll;
  • √ 二分查找
  • 打印集合的全部子集。
  • 僵尸进程
  • √ TCP的三次握手(要求画出来并解释)这里有个SYN劫持SYN洪泛滥攻击DOS攻击
  • √ static关键字的作用
  • √ 如何防止C++重定义和类的耦合性?(C++听两遍的人应该会了吧)
  • √ 进程间的通信方式?(管道,匿名管道,消息队列,共享内存,信号量,信号,套接字)
  • 32位操作系统内存如何分配?
  • √ vector扩容(昨天刚研究完)答:在不同的编译环境下扩容方式不同。①在GCC环境下是根据2^n增长空间的,0、1、2、4、8、16......②在VS环境下,是根据原大小的1.5倍扩容,向下取整0、1、2、3、4、6、9、13、19....
  • √ 简单的sever与client通信怎么代码实现(说了一下socket怎么实现。。)
  • √ 上面那个衍生到TCP的三次握手、四次挥手(此处答得有点不清晰)
  • √ HTTP的了解(我说我大致用过GET和POST。。他就没深问了)
  • √ 问我了解几种排序算法以及它们的时间复杂度,vector的sort是用什么排序(我说快排吧,没深究,只知道怎么用)
  • √ 操作系统,进程与线程的区别
  • √ C++11的新特性。。
  • √ 各种排序以及其复杂度
  • √ 栈与队列的区别
  • √ 进程与线程(然后叫说一下项目里面用到的)
  • √ static的作用
  • √ Linux的启动过程(从BIOS提取MBR信息->加载引导GRUB->加载内核->运行init进程->系统初始化->建立终端->登录系统,启动完成)
  • √ C struct sizeof
  • 函数指针传递,在一个函数中给参数指正申请内存。答指针是按值传递的
  • √ 问tcp三次握手,四次挥手
  • √ C/C++有哪些内存区。
  • √ memcpy和memmove的实现
  • √ asio的原理,TCP连接的原理和步骤
  • Linux网络编程read一个socket失败时,什么返回码需要重读,什么返回码应该放弃?
  • 一个类对象加上一个整形,如何编译通过
  • √ 一个二分查找的程序;
  • √ UDP和Tcp有什么不同;
  • 数据结构中排序算法的时间复杂度和二叉树的一些特性等
  • √ sizeof求一个类,虚继承对其的影响;
  • √ 求最大字串和;
  • 平衡二叉树;
  • √ 堆栈的区别;
  • √ 多态和引用;
  • √ 操作系统内存分配方式;
  • √ 同步通信和异步通信的区别
  • 问怎么快速查找QQ号是否被占用。答使用bitmap,百亿级的QQ号,使用bitmap存储,100G内存差不多足够了。
  • √ 如多态怎么实现?
  • √ 指针引用的关系?
  • √ 快排?
  • √ 问TCP/IP三次握手四次挥手。
  • √ 问数据库的索引。
  • √ 哈希怎么实现。答拉链法、线性探测、随机线性探测。
  • √ const 和宏定义的区别,set和map的底层实现,常用排序算法的复杂度。
  • √ 第一个问题就是TCP/IP以及对应的三次握手4次挥手,
  • √ hash和堆栈
  • √ C++的基础知识多态,虚函数,指针和引用,STL vector和list怎么选,vector怎么插入一个string,快排。
  • √ 手写strcpy;
  • √ 手写memcpy;
  • 100w个关键词,每个关键词小于等于50字节,找出前10个出现次数最多的关键词。内存只有1M。
  • 手写非递归后序遍历;
  • √ c++移动语义。
  • √ 手写单向链表的倒数第1000个节点。(注意链表本身可能没有1000那么长,和链表为空)
  • √ 从局域网过程是如何,利用了哪些协议。(dns,arp,icmp)
  • public和private函数在内存中的位置关系。
  • √ 问单向链表判断环路和入口。
  • 实现一个维护有最大值的队列。
  • √ tcp介绍。
  • √ 虚函数的编译实现。
  • √ strcpy函数的实现。
  • √ tcp握手;
  • √ redis怎么设计;
  • √ 怎么给链表排序。群面:设计一个朋友圈的系统,一起讨论方案看怎么设计。
  • √ 代码在内存中的分布都有哪些区,宏定义存在刚才你说的哪个区域?
  • √ 堆栈有什么区别啊,堆中的数据会回收吗,malloc和new有什么区别?
  • √ 说一下虚函数表是什么(C++后台开发必问),为什么析构函数都是虚函数,不这样会怎么样?
  • √ 多态和重载都是什么?
  • √ 知不知道现在C++现在发行到那个版本了?C++11有哪些新特性?
  • √ 算法题问了三个,100万数据找top k,
  • √ 判断一个数是不是2的幂,
  • √ 两个单链表有公共节点,找出第一个。
  • √ TCP三次握手、四次挥手、超时重传。
  • √ Linux现在发行到哪个版本了?你一般用Centos还是Ubuntu啊,为什么?
  • √ Linux下查看内存使用命令是什么?查看负载的命令是什么?
  • √ c++虚函数和纯虚函数有什么区别,分别应用在什么场合?
  • √ 子类析构会调用父类的析构函数吗?执行顺序是什么?
  • √ 程序的内存分布。
  • √ 知不知道桶排序和希尔排序,希尔排序和快速排序区别。
  • √ 画出TCP的三次握手,为什么一定要三次,两次会有什么后果?
  • √ SQL语句,查询两个数据库表中ID相同的信息。
  • √ STL用过吗?map和hashmap的区别,查找的时间复杂度分别是多少?
  • √ 手写两道算法题:二分查找和一个很简单的二维数组搜索。
  • √ 场景题:现在要完成一个微博评论的部分,想在用户进入新闻时优先看到自己好友对此新闻的评论,好友可能有多条评论,怎么设计结构。
  • √ 智力题:36匹马6个跑道无秒表选前三,最少跑几轮。
  • √ epoll服务器接口函数调用过程。相应接口:socket, bind, listen, epoll_create, epoll_ctrl, epoll_wait, accept
  • √ epoll ET LT的使用场景 ET LT的区别
  • √ 什么时候产生EPOLLOUT事件,什么时候产生EPOLLINT事件。accept建立连接时客户端触发EPOLLOUT事件,服务端有新连接,可读,断开时EPOLLINT事件
  • √ UDP可以connect吗。可以
  • √ TCP状态机。客户端:SYN_SENT -> ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT。服务端:LISTEN -> SYN_RCVD -> ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED。
  • √ TIME_WAITE出现在哪一端,作用。主动断开那一端,作用:自己查一下吧
  • √ RST什么时候会出现。建立连接的SYN到达某端口,但是该端口上没有正在 监听的服务。TCP收到了一个根本不存在的连接上的分节。请求超时。 使用setsockopt的SO_RCVTIMEO选项设置recv的超时时间。接收数据超时时,会发送RST包。
  • √ 进程间通信。管道、共享内存、消息队列、套接字、信号、信号量
  • √ fork的返回值,什么时候是子进程,什么时候是父进程。子:0 父:父pid
  • √ 子进程怎么才能不继承父进程的句柄。exec函数族
  • √ STL六大部件。容器、算法、仿函数、迭代器、适配器、分配器
  • √ 各个容器的使用场景。不一一说了
  • √ vector的容量很大,怎么减小。swap( )临时vector对象
  • √ deque的底层实现。STL源码剖析
  • √ 红黑树的特点。set, map的底层实现。每个节点或者是黑色,或者是红色。根节点为黑色。叶子节点(空节点)全为黑。如果一个节点为红色,它的子必须为黑。一个节点到最后的叶子节点每个路径中,黑节点数目相同。左子树和右子树高度差不超过2倍。查找时间复杂度logn
  • √ 智能指针解决什么问题。怎么实现的。说说其构造函数,拷贝构造函数的实现。内在泄漏,维护一个指针和计数器
  • √ 快排空间、时间复杂度。O(1)(递归logn~n),O(nlogn)
  • √ 设计模式。常见的看一下
  • √ linux怎么查看内存占用、CPU占用、IO占用。free,top,iostat,
  • √ 前++,后++操作符重载,怎么区分。后++有参数
  • √ 四种强制类型转换,特点。static_cast、const_cast、reinterpret_cast、dynamic_cast
  • √ const修饰符,成员变量,成员函数,静态对象。参考博客 https://www.cnblogs.com/crazy-snail/p/9420329.html
  • √ 纯虚函数可以有函数体吗。可以,不可实例化
  • √ 双向迭代器重载了哪些操作运算符。没有+,-,+=,-=
  • √ STL内存分配策略。STL源码剖析
  • √ C++11特性、介绍fork函数 、介绍time_wait状态、为什么tcp连接握手需要三次、介绍迭代器失效。push_back会导致迭代器失效吗、红黑树的特征,
  • √ 哈希冲突的解决方法
  • √ 进程和线程的区别
  • √ 你都使用什么线程模型、介绍协程、
  • √ 介绍快排算法、什么是稳定性排序,快排是稳定性的吗,为什么、快排算法最差情况推导公式、
  • √ 析构函数虚函数为什么
  • √ 构造函数为什么不能是虚函数。      
  • √ 打印在纸上的题目,考察:new [] 对象。static 成员。子类构造函数具体调用了啥。拷贝构造函数与赋值函数的区别。等号在拷贝构造函数出现的时机。什么时候需要赋值函数,深拷贝与浅拷贝。虚函数的调用时机、笔试过程中一道题的思路,考察虚指针的初始化时机。随机出一道纸上的题目,给定前序遍历ABC后序遍历CBA,求中序遍历是什么,画出来两种情况。笔试过程中(之前牛客笔试),第一道算法题的思路:有100个弹珠,双方轮流拿,每个人只能拿1~5个,无法拿的人输,必胜解法。
  • gdb调试用过吗。什么是条件断点,
  • √ 函数指针和指针函数的区别,写个例子出来。
  • √ 索引是什么,多加索引一定会好吗?上一次面试中,你有哪些问题你回去查了。上一次面试中,你的代码有问题,你知道吗。
  • √ 如何找到第k大的数(top k 的问题)。答编程之美上的原题,用堆排序构建一个小顶堆,每个进来的数和最顶上的数比较。
  • skiplist、BST、多级哈希表。
  • √ 网络的握手和挥手,问了stl 算法题之类的,其余的就是c++的普通问题。面试官的问题:
  • √ 取10000个数前3大。
  • √ 问了多态,多继承的虚函数表,gcc编译的步骤等等。
  • √ 钟表时针分针多次相遇算时间,有一百件,一万件,一亿件衣服分别怎么摆放整理。
  • √ 如进程间通信,应用层协议之类的,不同进程间通信的优缺点
  • 两个香,一个火机,每根可以燃烧60分钟,非均匀分布,需要测出15分钟的时间。然后问问网络,数据,复杂均衡C++语言基础聊了聊自己的项目,工作经验面试官的问题:问两个香,一个火机,每根可以燃烧60分钟,非均匀分布,需要测出15分钟的时间。答两头同时点燃
  • √ C++和TCP网络编程、并发多线程编程。
  • √ 就着简历问项目上的东西,看出来他也不懂,热身Hyperledger Fabric的架构;
  • 内存模型?为什么这样设计?
  • √ TCP四次挥手;
  • √ 数据库,用过MySQL但数据量小,不知道怎么扯到以太坊,就问了以太坊的共识;
  • √ 说了个题,一年的超时流水数据8G,交易记录主要用顾客ID和每次积分记录,求这年的积分TOP100?我最后磨出个HashMap处理完后用堆,脑抽说了个大顶堆,其实是小顶堆。
  • √ 还有问了下Linux命令,电脑变慢了怎么看问题出在哪?答了个top,又说不是cpu的问题怎么看?没说出来。后面看了看,top-cpu,free-ram,iostat-io,netstat-net基本上就这些。
  • √ C语言的变量的声明与定义的区别,还问了我很多细节的问题以及智力题。面试官的问题:
  • √ 什么可以在main函数之前被执行
  • √ 三次握手四次握手等等
  • √ 实现字符串的比较,
  • 问25匹赛马,5个跑道,也就是说每次有5匹马可以同时比赛,问最少比赛多少次可以知道跑得最快的5匹马。
  • 静态链接和动态链接的区别。
  • √ 问一些区块链相关知识,比如以太坊虚拟机是怎么做出来的,要求讲代码流程,关讲概念不行。
  • √ 手写memcpy list类,tcp深挖io多路复用,多态、虚函数表,volatile大数据,top k 分治。
  • √ 指针和引用的区别,static关键字的使用,以及stl容器。
  • √ 问你认为腾讯QQ使用的是TCP还是UDP,为啥呢,高并发如何做的到?面试官讲实际还是TCP为主,我理解UDP使用1对多的技术。
  • √ C++对多态的认识,然后是询问堆栈以及全局静态区,再问了this指针是如何实现的,然后询问Windows内存管理
  • √ 数据结构图的存储方式
  • √ TCP和UDP的区别。
  • √ static关键字,TCP3次握手与四次挥手,C++虚函数实现机制,gdb的使用;
  • √ 算法:求数据流的中位数
  • √ 问TCP3次握手与四次挥手。
  • 有关于内存分配的问题,怎么实现自主在堆中进行内存分配,因为我自己实现了malloc函数,所以就是简单回答用sbrk() 的系统调用对于堆进行内存分配。
  • √ TCP和UDP的区别。
  • √ 三次握手和四次挥手。
  • √ 在四次挥手的时候会有一个wait 的过程,目的是什么。
  • √ 对于epoll,select, poll的了解。
  • √ 问了关于Linux环境下的命令语句。
  • 有八只小白鼠,八瓶要其中有一瓶毒药,药发时间是一小时,问最小用几只小白鼠能找出毒药。
  • √ vector的增长方式
  • √ stdcall,decal的区别,还有虚函数的知识。
  • √ 如果让我设计开发一个类似12306网站买票的环节,难点在哪里?
  • √ 纸上写出二叉树非递归遍历。
  • √ 深浅拷贝,强制类型转换,仿函数,智能指针,野指针布隆过滤器,路由和交换的区别,epoll和select区别B树的特点分布式RPC,redis,tcp长连接的保持。
  • √ 问客户端协议更改,服务端怎么针对这个问题修改。
  • √ 问单向链表反转(手写)
  • 三叉树、线程、进程、IPC、静态变量、全局标量存放位置,new/delete和malloc/free的区别,一致性hash等。
  • IPC。答消息队列、管道、共享内存、socket、信号量。
  • printf的原型。
  • √ 哈希表的数据结构和如何查找表里元素、用在哪些地方;
  • √ TCP、UDP的区别;
  • √ linux中的进程、线程的区别(同windows)
  • √ C/C++的问题,比如指针和引用的区别,虚函数的机制
  • √ 怎么防止僵尸粉(微博、抖音的评论点赞登),然后问了基础的问题tcp的三次握手,再然后问了协程与线程的区别,最后问了几个算法题。
  • √ 操作系统的进程与线程区别,内存对齐。
  • √ c++ 中const 与 static的用法.
  • √ 2个有序链表合并代码。
  • √ 跑马问题,5个赛道,25匹马,问找出前5快的马需要几次。
  • √ c++里面的存储。
  • √ 马尔科夫链问题。
  • √ i++跟++i的区别,从效率方面回答。还有STL的问题
  • 给了一短类程序,让找出其中的错误2.字符串右移让写代码3.如何快速一百万个数中找出一个不存在的数4.malloc之后fork之后需要几次调用free 5.tcp连接几次握手,断开呢?为什么是你说的几次?
  • 两个日期之间相隔的天数。注意对输入参数的检查;注意两个日期的前后;注意返回值有可能为正有可能为负。
  • 用rand5()产生rand7()
  • 一个有序序列找出一个和为特定值的子串
  • 计一个20万qps的系统(单机5qps)
  • √ 让写快排,然后hashmap一连问了十几个问题
  • √ select和epoll的区别,写个http报头解析程序。
  • √ 判断交叉链表,如何用最好的方法。答快慢指针,最后两指针相遇。
  • √ 大数的阶乘,不难,主要是数组中进位的处理,一开始我转化为大数加的问题,面试官说不用这样,然后就又按照进位的方法写了一遍
  • √ 大量的QQ号和注册地等信息,设计一个系统快速查找对应的信息,我问了下,一个机器存不下的吧?面试官说是,我就说,那就先建索引,根据索引找到存储的机器,机器里面用hashmap查找,索引可以用b+数或者hash来建立,面试官说,就是分两步,先根据索引找机器,然后在机器里面找信息是吧,我说是的
  • √ 数据库索引优化,B+树。
  • C++中一个类的数据时怎么组织的(虚函数、成员对象),如果这个类有多重继承来自多个父亲的虚拟函数、成员对象怎么分布在这个类的实例里面?系统需要不断申请内存,释放内存,请写一个内存池的管理。特殊条件:每次都是申请、释放10个字节;要求内存池的管理高效。
  • √ epoll和select区别 linux的内存机制 linux锁的机制 top命令 线程同步的问题
  • √ 字符串转整型数这个题被问了多次。
  • √ 字符串翻转,c++基本知识。二面扑克牌之类的智力题,无感。
  • √ C++多态原理,空类大小,为什么TCP三次握手、4次挥手,为什么要有TIME_WAIT,进程间通信,设计模式,单词纠错,手写堆排序、快排,static,const,volatile用途,内存空间模型(堆,栈,全局变量),malloc和new区别。
  • Linux网络编程read一个socket失败时,什么返回码需要重读,什么返回码应该放弃?
  • malloc(size_t size)中参数是否可以为0?
  • √ C++中虚函数可以内联吗?
  • √ TCP/IP 流量控制、拥塞控制
  • 二维码是怎么识别的,这个完全没有概念,随便说了说。之后就问了各种linux的系统相关的东西,问的还是比较有深度的,比如printf的执行过程等,自己对linux了解不多,比较尴尬,之后问了一些stl标准库的东西,比如map的实现,红黑树性质,hash_table的实现,这些我还算了解,回答的也还可以。最后问了关于p2p实现和腾讯的网站架构怎么支撑这么大的访问量,不太了解,回答的不好。感觉一面就挂了,晚上给我发了二面通知,二面面的比较简单,都是c++基础和数据结构算法,回答的也还可以。面完后没多久就通知挂了,可能是一面比较差劲。
  • √ 问下载断点续传怎么实现的
  • 洗牌算法,就是个简单的随机数交换,当时想的比较复杂,答的不好。然后问了些TCP/IP的,关闭连接时的状态转换等。还问了些数据库优化方面的。
  • C++的基础知识,例如虚函数是怎么实现的,EXTERN C有什么用,然后问了些TCP方面的知识,最后除了几道算法题做了一下
  • 1.云计算概念是什么? 2.数据库的引擎innodb和myisam 3.数据库的索引,聚簇索引和非聚簇索引,hash和btree.btree索引适用于什么场景。建索引是可以加快查询速度,但是缺点呢? 4.对网络编程熟不熟 5.编程题,编写一个两位数除法,要求输出商、小数、如果有循环节则输出循环节。
  • 问聚簇索引和非聚簇索引有什么区别?答我打了个比方,数据库就好像一本汉语字典,索引就是字典前面的快速查找方式,比如拼音序、偏旁序、笔画序等等。聚簇索引是唯一的,非聚簇索引可以有多个。其中文件是按聚簇索引的顺序物理存储的,比如汉语字典上就是按拼音的顺序来存储汉字的,因为物理顺序只能有一个,故聚簇索引只能有一个。
  • tcp/ip协议,c++的多态,虚指针,icmp协议,快排算法面试官的问题:
  • 问用简洁的话概括下c++的多态.答同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
  • 简单描述一下B+树的实现吧
  • √ 用两个栈实现一个队列
  • 引用和指针的区别,了解网络编程吗,阻塞非阻塞,同步非同步,堆栈。面试官的问题:问自己写一个strcopy函数.
  • 链表,树,排序,随机算法等等
  • √ tcp建立连接的三次握手。
  • 网络拥塞控制的方法。
  • √ 虚函数的实现方式。
  • √ 设计一个双向链表,并提供一个可根据值删除元素的函数
  • 写一个二叉树的bfs
  • 有读和写两个线程和一个队列,读线程从队列中读数据,写线程往队列中写数据(我写了编程之美中“多线程下载”那节提供的方法)然后又是俩讨论题(1)讨论stack,heap,memory-pool(2)讨论tcp的流量控制和拥塞控制机制后来还问了epoll和select的区别(貌似这个问题我每次都被问到)面完后,他让我先回去,我正要下楼,他给我打电话让我回去,说领导继续面。
  • 问写一个函数,返回一个字符串中只出现一次的第一个字符竟然遍历了两次字符串,最后他提示了下,我才发现遍历一次即可
  • 1.Linux的婚姻算法 ; 2.怎样减少C++的头文件;面试官的问题:
  • √ 问malloc实现
  • √ 数组里有一个数占了一半以上,问怎么找到这个数。
  • √ 问几亿个数找最大的100个数;手机通讯录如何实现的;
暂无评论

发送评论 编辑评论


				
上一篇
下一篇