编程题目
数据库索引
基本的算法 几个排序的时间复杂度
项目经历好好准备一下怎么说(看一下)1
改简历 。 2!!!!!
一遍笔记 。 然后实现排序 。 然后基本的平衡二叉树 epoll select B树 B+ 树 红黑树 的实现
准备socket 多线程 文件流相关的东西 看相关程序
关系型数据库
数据库各种键的概念
MFC实现媒体播放器???看看
Linux相关
设计模式
http协议相关
看项目!!!肯定会问
地址解析过程,dns解析过程
epoll select
B树 B+ 树 红黑树 的实现
各种设计模式
组合索引相关
共享内存的底层是如何实现的,这个没看过,答了一下同步互斥的问题,好像面试官不太满意
多线程 socket通信 。 多种排序 hashmap与map http协议相关
平衡二叉树AVL 实现尤其是插入删除
直接写让我手写B树。然后手了一个红黑树的构造和归并排序。(归并排序需要考虑全面一点。有边界测试,错误测试,和内存泄漏。)
看一下笔试的题目 3
自己写一下深度优先遍历和广度优先遍历
五层模型每层的叫法以及每层的协议 4
大概过一下之前的面试题目5
剩下的时间开始看算法 。 各种算法 先看BAT的链表,二叉树,字符串 。。。
问了文件系统。
堆排序
希尔排序
重现基本的算法(最后的基数排序还不清楚 这个最后再说 其他的都要实现一下)
数据库差集都是啥
5、select、poll和epoll。
java中整形与字符串的转化 https://www.cnblogs.com/shootercheng/p/6022411.html
归并
反转二叉树
B+树 与B树的区别 红黑树 平衡二叉树概念
1、链表判断环路和查找连接点;
2、两个栈实现队列,
如何实现多线程并发;
修饰符的作用范围
3、两个串任意合并是否可以成为第三个串。
手写代码,判断两个树时候相同(结构相同,内容相同)
1、linux内核态和用户态,为什么要这么分
2、多重继承为什么会含有多个虚表指针而不是一个?
3、tcp和udp的区别,tcp是怎么做错误处理的?
4、读文件时系统和硬盘会做哪些工作。
const指针常量
知道cookie和session的区别吗?
服务器端接收代码
IO阻塞 同步异步
画出进程的状态转换图
进程间通信的方式。
内核态和用户态的区别
你都知道哪些设计模式?
1、谈项目细节,问的比较深,改进什么的,多并发一类处理,总之往大数据上靠,你怎么解决。
2、写两段代码,一个是打印九九乘法表(简单,主要考代码风格吧),另一个是socket服务端接收代码(这个写的不好,主要考IO阻塞的、问了同步异步)。
3、
4、主要三个服务器方面的问题:
a.从接收包,解包,提内容,存数据库期间会出现哪些异常,怎么解
b.服务器宕机,为什么客户端还是可以工作,实现模型(加额外路由器进行管理);
c.怎么实现多服务器负载均衡。
简答 一共就四道大题:
(1)有一个 vector 容器中,存有 1 亿个 qq 号(不重复),如何快速挑选出其中奇数号码?(Hash)
还有快排和堆排序的原理,接着问,对100w个数据排序的 话,选出最大100个,哪种快些?
Linux递归删除 文件目录的代码实现
int转型为double static_cast
怎么不用循环知道一个数是不是2的n次方?
TIME_WAIT的什么时候出现及其作用
主动断开的一方接收到对端的FIN就进入TIME_WAIT状态
作用:可靠断开,让老的重复的报文段在网络中过期失效,这样在建立的新连接时将不在接受它们
一个有n个数的数组中的数的范围为[1, n],其中有且仅有一个数有重复,找出那个数?
刚开始理解错题目,所以浪费了一些时间,之后经过面试官提醒,纠正了错误。
输入一个十进制数,输出一个二进制数
作者:bieliwoen
数据库了不了解,我说不是很了解,然后就给我出了一道SQL语句的题。。。
有三个表,table_a、table_b、table_c,每个表都有一个相同的字段query,
找出其中该字段在table_c出现但是其他两个表都没有出现的?(一脸懵逼……早知道就说不了解好了)
简单说一下范式是什么?
开放性题目:1000个苹果,10个篮子,怎么装才能给定任意一个数,然后用篮子组合成那个数?
1,2,4,8,16,32,64,128,256,489
STL中如何进行内存管理的。
Linux进程间的通信方式。
请说下数据库中事物的特征。
数据库索引有几种类别
HTTP返回码你知道哪些?
虚函数原理
慢重传/拥塞
TCP四次分手
Map 底层构成
比较两个字符串是否有相同字符
准备校招应该需要认证准备一段时间包括锻炼手写代码能力,熟悉常见的数据结构和算法,完成一些算法题目(刷Leetcode),
特别是动态规划题目
排序的稳定性是什么,什么样的排序是稳定的?
对C++的学习掌握情况怎样?
一个C++程序从编译到运行都经历了哪些阶段?
C++的特点是什么?
C++多态是怎么实现的?
static和const关键字是干什么的?
举例自己熟悉的设计模式,并且解释观察者模式
设计模式在平时应用的情况
tcp udp位于什么层,有什么区别?
linux命令的举例
一个32位机器上linux进程最大可以申请多少空间?
大端法和小端法指的是什么?在纸上写一个程序进行验证
对java和mysql的询问
C++、设计模式、操作系统、组成原理、Linux、计算机网络
Map 底层构成
算法题三个要求时间复杂度最低
A: 比较两个字符串是否有相同字符
B:数组里面的子数组含有正数和负数 求子数组和的最大值
关系数据设计。
数据库索引
平衡树的原理是什么
https://blog.csdn.net/fdssdfdsf/article/details/7983861
2、Linux下如何查看网络中服务器状态?
、Linux下TCP服务器都有什么状态?
4、Linux下TIME_WAIT和CLOSE_WAIT区别是什么?
5、知道epoll和select吗?
6、创建一个TCP服务器的步骤是什么?
7、端口是干什么用的?
8、知道哪些排序算法,说一下时间复杂度,快速排序什么情况下时间复杂度最高?
图中的最短路径问题怎么求、迪杰斯特拉算法和弗洛伊德算法的区别有哪些?
0、B树和B+树的区别有哪些?
11、操作系统中的PV操作是做什么用的,能否举个例子?
1、c++虚函数和纯虚函数有什么区别,分别应用在什么场合?
2、子类析构会调用父类的析构函数吗?执行顺序是什么?
3、程序的内存分布。
4、知不知道桶排序和希尔排序,希尔排序和快速排序区别。
5、画出TCP的三次握手,为什么一定要三次,两次会有什么后果?
6、SQL语句,查询两个数据库表中ID相同的信息。
7、STL用过吗?
map和hashmap的区别,查找的时间复杂度分别是多少?
8、手写两道算法题:二分查找和一个很简单的二维数组搜索。
9、场景题:现在要完成一个微博评论的部分,想在用户进入新闻时优先看到自己好友对此新闻的评论,好友可能有多条评论,怎么设计结构。
1、代码在内存中的分布都有哪些区,宏定义存在刚才你说的哪个区域?
堆栈有什么区别啊,堆中的数据会回收吗,malloc和new有什么区别?
2、说一下虚函数表是什么(C++后台开发必问),为什么析构函数都是虚函数,不这样会怎么样?
3、多态和重载都是什么?
4、知不知道现在C++现在发行到那个版本了?C++11有哪些新特性?
5、算法题问了三个,100万数据找top k,判断一个数是不是2的幂,两个单链表有公共节点,找出第一个。
6、TCP三次握手、四次挥手、超时重传。
7、Linux现在发行到哪个版本了?你一般用Centos还是Ubuntu啊,为什么?
8、Linux下查看内存使用命令是什么?查看负载的命令是什么?
9、SVM怎么分类的,有哪些核函数,如何优化SVM?
树、图、贪心、dp没问
一个文件有100w行,每行是一个长度为20的字符串(由a-z中的字符组成),内存大小为8Mb,问重复次数最多的字符串是哪个?
一个正方形,去掉左上角的1/4后余下的图形怎样均分成4个大小,形状相同的图形?
后台服务器每分钟会给客户端发送总共约10w个心跳检查包,每个心跳包的往返时间在0-100ms之间,求每分钟内这些心跳包的八十分位数(将往返时间从小到大排序,排在第80%的数,这个中位数的概念类似)?
第一个题目我先将文件通过hash分到10个小文件中,然后用hash_map来统计各个字符串出现的重复次数。面试官说可以,然后说我现在只要找出重复次数最多的那个字符串的重复次数,不需要找出具体是哪个字符串。问我有没有更好的方法。然后我想了想,如果不要保存字符串的话,直接将每个字符串都hash到整数空间,然后进行统计次数,内存差不多是8Mb,面试官听了说可能会出现冲突的情况的一些细节。
第二道题目想了一会没想出来,后面面试官提示说这次是技术面试,不是要你瞎蒙,要分析,分析可能更容易找到答案。我再想了想还是没有想法,然后面试官就说算了。回到学校后想了想,和同学讨论了下,其实很简单,当时面试时没有把思路放开啊!
第三道题目我特意跟面试官确认了心跳包的往返时间是在0-100ms之间,有了这个信息这个题目就好解决了,只要开大小为100的数组a来做计数器,对0-100ms之间的每个时间都统计对应的心跳包的数量。求八十分位数只需要从头遍历数组a,找到对应的第80%个位置的往返时间就ok了。
TCP协议三次握手过程,传输报文中处理请求连接信息还有哪些信
TCP和UDP优缺点,分别适用于什么场合?
如果让你设计微信视频,你会选择什么协议?如何实现
TCP/IP编程服务器端主要调用哪些接口
select/poll/epoll的区别
recv函数的返回值及其意义
3.计算机操作系统
进程之间通讯有哪几种方式?
管道通讯有哪些限制?
这几种通讯方式中那种方式比较好?
进程和线程的优缺点,各适用于什么场合?
4.C++ extern 关键字的作用
extern "C"的作用
map和hash_map的区别
hash_map内部是如何处理冲突的
sizeof(A) sizeof(B) 如果B继承于A,二者大小关系如何
基类的析构函数必须为虚函数吗? 为什么?
strcpy strncopy 哪个更安全 实现strncpy
不用临时变量实现strlen
const关键字的作用
violate关键字作用
一个双向链表,中间有一个节点value为1,在其后插入一个节点,如何做,写出思路
2.stl
vector内存增长方式
vector list 区别
map 数据结构
红黑树与普通avl树的区别
tcp终止链接几次挥手 画出这四次过程,我写出了具体的状态转化过程,面试官追问,TIMEWAIT状态没有会有什么影响,主要答被动终止的一方会出现持续等待导致系统资源浪费。面试官继续问,持续时间多长以及为什么
linux中查看网络连接状态用什么命令,netstat,具体参数,我答-a配合管道metstat -a|grep TIME_WAIT,可以更优
还知道哪些其他linux命令,比如查看cpu状态以及另外一个我不会也忘记了。
接着问了会不会gdb,面试官问设置断点用什么命令b,查看变量用什么p
Http协议端口号,这个问题一下子懵了,其实很简单80
如果一个cpu有八个核,多进程比较好,还是多线程比较好,我回答了根据线程实现方式不一样有所区别,内核级线程适合用多线程,用户级线程适合用多进程
知不知道共享内存是什么
5.数据库 这方面没怎么问,不知道是不是跟我一面有关系 只问了用过那些数据库
有三张扑克牌,其中有一张中奖100块
问题一,随机抽取一张牌中奖概率是多少1/3
问题二,先随机抽取一张牌,然后拿走一张一定不是100的那张,再将你手中的牌和剩下的一张牌交换,中奖概率是多少2/3
https://www.cnblogs.com/perfy576/articles/8939791.html
hashmap底层实现原理
hashmap存储结构怎么样,怎么处理的hash冲突,当查询时,其时间复杂度怎么样
说说spring mvc的流程
说说线程和进程的区别
线程和进程都可以并发吗
wait sleep的区别,并说明使用场景,wait sleep都会释放cpu资源吗
线程如何产生死锁,介绍一个场景
怎么避免死锁的产生
用过线程池吗?说说为什么要用线程池?都知道什么线程池?
如果让你设计数据库,你会想到那些优化
你刚才说了索引,说说索引类型和怎么实现的吧
问你一个关于索引的问题一个组合索引,a b c那么 a b c, a c ,a b哪个可以使用该组合索引。
一个表有用户id.和用户成绩,怎么找到成绩前10的人。
数据库中char和varchar2的区别,和使用场景。
看你项目使用了restful请求,简单介绍一下。
你做的项目有没有日志系统,类似于登录日志等。是怎么实现的。
你的项目都部署在什么服务器上。
刚才说你部署在腾讯云上,就是linux了,说一些你常用的linux命令。
linux中如何查看一个端口是否被占用,被那个进程占用。
http的默认端口是80,怎么将它改为8080端口。
linux中vim怎么统计文件的行数。
linux中怎么查看内存使用情况和cpu的使用情况。
你做项目的时候遇到过那些http状态码,你都是怎么处理的。
在项目中用到过设计模式吗?假设一个场景使用工厂模式
说说不经过第三个变量,怎么将两个变量交换。
说说jvm的gc,gc算法,gc收集器
介绍一下redis。这是在你的项目中用到你才学的,还是自己主动了解的。
如何在不加锁的情况下实现多线程安全访问一个数据结构?当时没有答上来,后来想了想,应该使用观察者模式,一个线程负责修改,剩下的线程读取就行了。优先级用读优先或者写优先。
接下来,面试官看我简历上写熟悉C++,便问我有没有用过标准库,知不知道底层实现。于是我便将map,set的实现以及vector的动态内存分配回答了一下。
还有一道判断两个链表有没有交点的题。给出的答案是把链表头尾相连,转化成判断是否有环。面试官表示太麻烦,问有没有更好的思路。其实答案很简单,直接判断最后一个结点是否相同就行了。当时太紧张,面试官提示了一下,仍然没想到这个答案orz。
Linux下一个程序最大能开多少内存
因为简历上写用过Linux系统,所以面试官问了一些Linux下的常见命令:如何查看CPU和内存使用率(top),如何查看内存泄漏(top命令查看,看哪个进程开启后内存使用率一直攀升),如何查看网络状态(netstat)。
面向对象的特点(继承封装多态),又问我多态怎么实现,我就回答了通过虚函数和继承实现,顺便回答了虚函数的实现原理。还问了virtual关键字的用途,也回答了。
最后一个问题,dynamic_cast和static_cast的区别和用途,没回答上来。。
https://blog.csdn.net/qingzhuyuxian/article/details/81100411
https://blog.csdn.net/github_39273626/article/details/81417056
https://blog.csdn.net/li_wei_quan/article/details/81221586
第一题是写找逆序数的算法,第二题是计算磁盘大小(最后一个小问是结合B+树的), 算法题第一道是按格式输出字符串,第二道是关于完全二叉树的(这道题我直接放弃了)。