盘点腾讯Linux、 C++后台开发面试题,做好充足准备,不怕被Pass
一、C/C++
const
多态
什么类不能被继承
二、网络
网络的字节序
网络知识 TCP三次握手 各种细节 timewait状态
TCP与UDP的区别 概念 适用范围
TCP四次挥手讲一下过程,最后一次ack如果客户端没收到怎么办,为什么挥手不能只有三次,为什么time_wait。
对于socket编程,accept方法是干什么的,在三次握手中属于第几次,可以猜一下,为什么这么觉得。
tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用?
知道udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计?
http与https有啥区别?说下https解决了什么问题,怎么解决的?说下https的握手过程。
tcp 粘包半包问题怎么处理?
keepalive 是什么东东?如何使用?
列举你所知道的tcp选项,并说明其作用。
socket什么情况下可读?
nginx的epoll模型的介绍以及io多路复用模型
SYN Flood攻击
流量控制,拥塞控制
TCP和UDP区别,TCP如何保证可靠性,对方是否存活(心跳检测)
tcpdump抓包,如何分析数据包
tcp如何设定超时时间
基于socket网络编程和tcp/ip协议栈,讲讲从客户端send()开始,到服务端recv()结束的过程,越细越好
http报文格式
http1.1与http1.0区别,http2.0特性
http3了解吗
http1.1长连接时,发送一个请求阻塞了,返回什么状态码?
udp调用connect有什么作用?
三、操作系统
进程和线程-分别的概念 区别 适用范围 它们分别的通讯方式 不同通讯方式的区别优缺点
僵尸进程
死锁是怎么产生的
CPU的执行方式
代码中遇到进程阻塞,进程僵死,内存泄漏等情况怎么排查。
有没有了解过协程?说下协程和线程的区别?
堆是线程共有还是私有,堆是进程共有还是私有,栈呢
了解过协程吗
共享内存的使用实现原理
c++进程内存空间分布
ELF是什么?其大小与程序中全局变量的是否初始化有什么关系
使用过哪些进程间通讯机制,并详细说明
多线程和多进程的区别(重点 面试官最最关心的一个问题,必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)
信号:列出常见的信号,信号怎么处理?
i++是否原子操作?并解释为什么???????
说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)
列举说明linux系统的各类异步机制
exit() _exit()的区别?
如何实现守护进程?
linux的内存管理机制是什么?
linux的任务调度机制是什么?
标准库函数和系统调用的区别?
系统如何将一个信号通知到进程?
四、Linux系统
linux的各种命令 给你场景让你解决
Linux了解么,查看进程状态ps,查看cpu状态 top。查看占用端口的进程号netstat grep
Linux的cpu 100怎么排查,top jstack,日志,gui工具
Linux操作系统了解么
怎么查看CPU负载,怎么查看一个客户下有多少进程
Linux内核是怎么实现定时器的
gdb怎么查看某个线程
core dump有没有遇到过,gdb怎么调试
linux如何设置core文件生成
linux如何设置开机自启动
linux用过哪些命令、工具
用过哪些工具检测程序性能,如何定位性能瓶颈的地方
netstat tcpdump ipcs ipcrm
cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握
awk sed需掌握
gdb调试相关的经验,会被问到
五、MongoDB
关于大数据存储的(mongodb hadoop)各种原理 mongodb又问的深入很多
六、Redis
Redis内存数据库的内存指的是共享内存么
Redis的持久化方式
Redis和MySQL有什么区别,用于什么场景。
redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的
问了下缓存更新的模式,以及会出现的问题和应对思路?
redis的sentinel上投票选举的问题 raft算法
redis单线程结构有什么优势?有什么问题? 主要优势单线程,避免线程切换产生静态消耗,缺点是容易阻塞,虽然redis使用io复用epoll和输入缓冲区把命令按照队列先进先出输入等等
你觉得针对redis这些缺点那些命令在redis上不可使用? 比如keys、hgetall等等这些命令 建议用scan等等 这方面阐述
你觉得为什么项目中没有用mysql而用了es,redis在这里到底起到了什么作用?因为架构上这里理解不清楚,最后回答自己都觉得有漏洞了
你觉得redis什么算有用? 有用? 是说存进去了还是说命中缓存?最后把缓存命中率是什么说了一遍
你们这边redis集群是怎么样子的
平常redis用的多的数据结构是什么,跳表实现,怎么维护索引,当时我说是一个简单的二分,手写二分算法,并且时间复杂度是怎么计算出来的 (2的k次方等于n k等于logn)
七、MySQL
你们后端用什么数据库做持久化的?有没有用到分库分表,怎么做的?
索引的常见实现方式有哪些,有哪些区别?MySQL的存储引擎有哪些,有哪些区别?InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?
mysql查询优化
MySQL的索引,B+树性质。
B+树和B树,联合索引等原理
mysql的悲观锁和乐观锁区别和应用,ABA问题的解决
项目性能瓶颈在哪,数据库表怎么设计
假设项目的性能瓶颈出现在写数据库上,应该怎么解决峰值时写速度慢的问题
假设数据库需要保存一年的数据,每天一百万条数据,一张表最多存一千万条数据,应该怎么设计表
数据库自增索引。100台服务器,每台服务器有若干个用户,用户有id,同时会有新用户加入。实现id自增,统计用户个数?不能重复,好像是这样的。
mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标
八、算法
堆栈
有序数组排序,二分,复杂度
常见排序算法,说下快排过程,时间复杂度
有N个节点的满二叉树的高度。1+logN
如何实现关键字输入提示,使用字典树,复杂度多少,有没有其他方案,答哈希,如果是中文呢,分词后建立字典树?
hashmap的实现讲一下吧,讲的很详细了。讲一下红黑树的结构,查询性能等。
快排的时间复杂度,冒泡时间复杂度,快排是否稳定,快排的过程
100w个数,怎么找到前1000个最大的,堆排序,怎么构造,怎么调整,时间复杂度。
一个矩阵,从左上角到右下角,每个位置有一个权值。可以上下左右走,到达右下角的路径权值最小怎么走。
四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过。
MySQL的索引,B+树性质。
十亿和数找到前100个最大的,堆排序,怎么实现,怎么调整。
布隆过滤器
hash表解决冲突的方法
跳表插入删除过程
让你实现一个哈希表,怎么做
九、设计模式
对于单例模式,有什么使用场景了,讲了全局id生成器,他问我分布式id生成器怎么实现,说了zk,问我zk了解原理不,讲了zab,然后就没问啦。
除了单例模式,知道适配器模式怎么实现么,有什么用
十、分布式架构
CAP BASE理论
看你项目里面用了etcd,讲解下etcd干什么用的,怎么保证高可用和一致性?
既然你提到了raft算法,讲下raft算法的基本流程?raft算法里面如果出现脑裂怎么处理?有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?
rpc有没有了解
十一、系统设计
朋友之间的点对点关系用图维护,怎么判断两人是否是朋友,并查集,时间复杂度,过程。
10g文件,只有2g内存,怎么查找文件中指定的字符串出现位置。
Linux大文件怎么查某一行的内容。
秒杀系统的架构设计
十亿个数的集合和10w个数的集合,如何求它们的交集。
针对自己最熟悉的项目,画出项目的架构图,主要的数据表结构,项目中使用到的技术点,项目的总峰值qps,时延,以及有没有分析过时延出现的耗时分别出现在什么地方,项目有啥改进的地方没有?
如果请求出现问题没有响应,如何定位问题,说下思路?
除了公司项目之外,业务有没有研究过知名项目或做出过贡献?
go程和线程有什么区别?
服务器CPU 100%怎么定位?
设计一个限流的算法
定时器除了小根堆,还可以怎么做
项目性能瓶颈在哪,数据库表怎么设计
在高并发的生产环境中(非调试场景下),如果出现数据包的丢失,如何定位问题
一个每秒百万级访问量的互联网服务器,每个访问都有数据计算和I/O操作,如果让你设计,你怎么设计?
总结
tcp/udp,http和https还有网络这块(各种网络模型,已经select,poll和epoll)一定要非常熟悉
一定要有拿的出手的项目经验,而且要能够讲清楚,讲清楚项目中取舍,设计模型和数据表
分布式要非常熟悉
常见问题定位一定要有思路
操作系统,还是操作系统,重要的事情说三遍
系统设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程
一点很重要的心得,平时blog和专栏看的再多,如果没有自己的思考不过是过眼云烟,根本不会成为自己的东西,就像内核态和用户态,平常也看过,但是没细想,突然要自己说,还真说不出来,这就很尴尬了。勿以浮沙筑高台,基础这种东西还是需要时间去慢慢打牢,多去思考和总结。
C/C++Linux高级开发路线
对标腾讯C++后端开发
如果你对编程感兴趣,想要深入学习。这里分享素材包及学习资源,还有免费教程哦
(包含C语言、C++、Windows、Qt、Linux相关知识点)~不论是小白还是进阶者,在这里都能获得成长。
盘点腾讯Linux、 C++后台开发面试题,做好充足准备,不怕被Pass的更多相关文章
- [转]linux C/C++服务器后台开发面试题总结
linux C/C++服务器后台开发面试题总结 https://www.cnblogs.com/nancymake/p/6516933.html 一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别 ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- linux C/C++服务器后台开发面试题总结
一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别? 主要浅谈下C/C++和PHP语言的区别: 1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网 ...
- 入我新美大的Java后台开发面试题总结
静儿最近在总结一些面试题,那是因为做什么事情都要认真.面试也一样,静儿作为新美大金融部门的面试官,负责任的告诉大家,下面的问题回答不上来,面试是过不了的.不过以下绝不是原题,你会发现自己实力不过硬,最 ...
- C#版 - 小红书后台开发面试题: 二维数组中的查找
二维数组中的查找 热度指数:24274 时间限制:1秒 空间限制:32768K 本题知识点: 查找 在线提交网址: http://www.nowcoder.com/practice/abc3fe2 ...
- 后台开发面试题(.net与java)
最近面试了几家公司,发现大部分公司面试题有相似的地方.现在此记录下我还记得的一些题: JAVA部分: 1.Java Map 按Key排序和按Value排序: 参考链接:Java Map 按Key排序和 ...
- Java后台开发面试题总结
1>如何定位线上服务OOM问题 2>JVM的GC ROOTS存在于那些地方 3>mysql innodb怎样做查询优化 4>java cas的概念 Java服务OOM,比较常见 ...
- php开发面试题---Linux常用命令大全
php开发面试题---Linux常用命令大全 一.总结 一句话总结: ls 查看目录中的文件 cd .. 返回上一级目录 cat 查看文件内容 touch 新建文件或修改时间 1.linux 系统信息 ...
- 100个iOS开发面试题汇总-王刚韧的技术博客
100个iOS开发面试题汇总 关于iOS开发面试,不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的 ...
随机推荐
- Luogu P4172 [WC2006]水管局长
题意 给定一个 \(n\) 个点 \(m\) 条边的图和 \(q\) 次操作,每次操作分为以下两种: 1 u v:查询 \(u\) 到 \(v\) 的一条路径使得边权最大的边的权值最小. 2 u v: ...
- NB-IoT的同步信号解析
NB-IoT的小区搜索和LTE的小区搜索是类似的,每个UE都是通过对同步信号的检测,来实现与小区时间和频率上的同步,以此来获取小区的ID.NB-IoT的同步信号包括NPSS和NSSS. NPSS用于完 ...
- VM Linux (Centos)联网
今天新建一个linux突然发现不能上网,然后百度好多都不行,最后还是解决掉了,这是我的配置方法 鼠标左击虚拟机(或者选中之后直接设置),找到设置选项,打开网络适配器,设为NAT模式 然后进入虚拟机,进 ...
- Django项目登录注册系统
Django项目之个人网站 关注公众号"轻松学编程"了解更多. Github地址:https://github.com/liangdongchang/MyWeb.git 感兴趣的可 ...
- ThreadLocal原理大解析
今天呢,和大家聊一下ThreadLocal. 1. 是什么? JDK1.2提供的的一个线程绑定变量的类. 他的思想就是:给每一个使用到这个资源的线程都克隆一份,实现了不同线程使用不同的资源,且该资源之 ...
- 浅谈OpenGL之DSA
今天准备写一篇文章简单介绍一下OpenGL4.5引入的一个新的扩展ARB_direct_state_access,这个扩展为OpenGL引入了一个新的特性就是Direct State Acess,下文 ...
- (3)ASP.NET Core3.1 Ocelot认证
1.认证 当客户端通过Ocelot访问下游服务的时候,为了保护下游资源服务器会进行认证鉴权,这时候需要在Ocelot添加认证服务.添加认证服务后,随后使用Ocelot基于声明的任何功能,例如授权或使用 ...
- WSL Ubuntu 18.04 LTS + VS Code
WSL Ubuntu 18.04 LTS + VS Code WSL(Windows Subsystem for Linux)使得Windows用户能够在Windows系统上使用原生的Linux环 ...
- 2、Django源码分析之启动wsgi发生了哪些事
一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! D ...
- java-Queue方法
Collection>Queue // 1. 新增 add/ offer boolean add(E e); // 队列满,IllegalStateException boolean offer ...