面试题汇总1

https://github.com/shujuner/interview

https://github.com/shujuner/HanTang-Notes

https://www.nowcoder.com/tutorial/93/156e55e0579d4a678e857b34d572c278

字节跳动实习C++一面

1、简述项目,遇到什么问题

2、C++

inline作用,优缺点

static的作用

代码的执行流程,从代码到程序运行整个流程说一下

虚拟内存说一下

extern "C"在C++中作用是什么?

成员变量增多会影响类的sizeof吗?虚函数增多呢?

类的内存布局

什么函数不可以为虚函数?为什么?

智能指针,用途及区别

智能指针和Java的gc有什么区别?

熟悉stl吗?熟悉哪些?

unordered_map怎么解决哈希冲突?哈希冲突太多会导致什么?

3、操作系统

进程调度算法

进程间通信的方法

分页、分段机制

4、计算机网络

http长连接、短连接

三次握手、四次挥手

TCP包含什么协议

UDP包含什么协议

TCP、UDP区别

5、两道算法

1)假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?

const int N=7;

int Count[N]={3,0,2,1,0,3,5};

int Value[N]={1,2,5,10,20,50,100};

2)判断两个字符串是否互为旋转词,如果一个字符串为str,把字符串的前面任意部分挪到后面形成的字符串叫str的旋转词。比如str=“12345”,str的旋转串有“12345”、“45123”等等。给定两个字符串,判断是否为旋转词

字节跳动后端开发一面

1、操作系统

  1. 进程和线程的区别
  2. 什么是线程安全
  3. 操作系统中的锁
  4. 线程之间通信方式
  5. 进程池,线程池
  6. 进程之间通信方式
  7. socket的概念
  8. 多线程线程的弊端
  9. IO和多路复用

2、计算机网络

  1. OSI 7层协议
  2. TCP、UDP的区别
  3. 路由器、防火墙处于哪一层
  4. DNS协议
  5. TCP可靠性的实现方式

3、数据库

  1. 数据完整性的实现
  2. 索引的结构、概念
  3. 如何提高索引的速度
  4. B+tree
  5. 主键
  6. 数据表设计的范式
  7. 数据表设计遵循的原则

腾讯补招面经

1.自我介绍

2.Java,C++会吗?(不会,没关系)

3.代码考核,15分钟做一道算法题

4.软链接和硬链接的区别?

5.并发和并行的区别?

6.Linux知道哪些命令?

7.C和C++有什么区别?

8.C++的源码读过吗?

9.stl的list和vector有什么区别?

10.虚指针知道吗?

11.内存泄漏知道吗?

13.智能指针知道吗?

14.跟面试官说了C++不太熟悉,面试官也有点苦恼,问我Python会吗?

15.http和https的区别?

16.http2.0知道吗?

17.正向代理和反向代理知道吗?

18.nginx的配置做过吗?

百度面试

一面 12.22 下午三点 1h

1.自我介绍

然后开始扒项目结合问问题

2.介绍一下flask

3.数据库索引,什么情况下创建索引

4.http/tcp/ip

5.tcp三次握手,三次的原因

6.http常用的请求方式(get?post、head…)

7.https如何进行数据传输

8.常见状态吗

9.redis能存储的数据类型

10.c++多态(动态多态)

11.智能指针(unique_ptr/shared_ptr/weak_ptr)

12.linux常用命令

13算法题

1)中序遍历二叉树递归+非递归

2)leetcode1 两数之和

反问

总结:问的挺基础

二面 12.25 下午四点 1.5h

1.自我介绍

为什么不找算法相关的?(喜欢开发。。。)

先深扒项目

2.cookie和session的区别

3.单点登录方式(cookie记录登录状态?然后一些cookie和session的问题,这块我不大会)

4.爬虫,ip被封后还能用你的电脑登录这个网站吗,ip被封了怎么继续爬,如何反爬

5.倒排索引(?)

6.es用过吗(?)

7.mongodb和mysql的区别(关系型非关系型的区别)

8.股票数据为什么用mongodb而不用mysql存储

9.在浏览器输入一个网址会发生什么

10.浏览器怎么渲染页面(DOM树)

11.tcp三次握手

12.http请求包含哪些头部信息

13.假设你的系统有很多人同时访问(高并发系统设计?)

14.redis常用命令(?)

15代码+算法

1)手写一个.h头文件,里边声明一个变量,声明一个函数,一个空类

2)cpp文件中引用两次这个头文件,报错:变量和类重定义,为什么?函数声明为什么不报错

3)两个不同的namespace下可以声明名字相同的变量吗,自己写一个namespace测试一下,namespace的作用,好像还有namespace什么时间起作用?(记不清了)

4)两个无序无重复元素的数组,求交集(答:先分别排序,再比较,相等的加入一个vector中)

5)假设两个数组有序,求出交集(开始写。。。)

6) 注意坑来了:改成模板。。。

7)改成模板后这个比较的时候就不适用所有的类型了,写一个能适用所有类型的(?)

8)看你上边写过函数指针,用函数指针写吧,函数参数能是函数吧(??????)

被问蒙了,脑瓜子嗡嗡的,一片混乱,最后函数指针没写出来。。。

16.继承和多态的关系,解释多态(多态的条件,函数重写和函数重载)

17.内存泄漏了解吗(答了解,然后没问)

18.new和malloc区别,为什么用new不用malloc

19.linux常用命令

总结:自己的项目一定要很熟悉,涉及到的技术尽量多去了解,c++一些比较基础但忽略的东西(对我来说不常见)

腾讯 C++后台开发

  • Linux
    Linux进程调度算法
    Linux进程地址空间分布
    Linux内存管理方法,页面置换算法,逻辑地址和物理地址的转换
    在一台内存为2G的机器上,malloc(20G)会怎么样?new 20G呢?
    进程和线程的区别,进程间通信方式
    解释孤儿进程,僵死进程,惊群效应
    IO模型,Select、Epoll和Poll的区别
    ET和LT的区别,需要注意什么
  • 计算机网络
    TCP三次握手四次挥手状态图,对应的POSIX API,为什么要三次握手,两次可以吗?
    TIME_WAIT的作用
    TCP和UDP区别,TCP如何保证可靠性,对方是否存活(心跳检测)
    流量控制,拥塞控制
    SYN Flood攻击
    HTTP状态码
    Libevent如何处理IO事件,信号事件,和定时事件
  • 数据结构
    布隆过滤器
    智能指针
    hash表解决冲突的方法
    红黑树性质
    redis中的数据结构
    跳表插入删除过程
  • 编程题:
    判断大小端,int的大端转小端
    去掉字符串开头和末尾的空格
    大数相加
    最长公共子序列LCS
    最小编辑距离
    二叉树中两个节点的最近公共父节点
    数据流的中位数
  • 其他
    虚函数的实现原理,子类构造析构函数的调用顺序
    STL中Vector、List和Map底层实现原理
    inline的作用
    struct和union的区别,字节对齐
    C++11新特性
    B树和B+树的区别,ACID, 索引种类,explain关键字
    智力题 楼层丢鸡蛋

腾讯面试

1.自我介绍

2.面试官:按规矩先刷题

2.1:最长上升子序列,要求取其中字典最小的结果 相关知识点:

2.2:在有序旋转数组中找到最小值

3.写服务端的套接字程序的步骤

4.五种IO模型

5.select和epoll的区别

6.水平触发和边缘触发

7.https原理,如何解决中间人攻击

8.C++11用过哪些特性

9.一致性哈希算法

10.Mysql两种引擎知道吗,他们的索引有什么区别

11.Linux查看进程和线程的指令用过吗

C++

多态是怎么实现的(讲了一下虚表指针,虚表,运行时确定地址,好像面试官不太满意)

虚表是哪时候生成的(编译时)

Inline标识符的作用

C++&****算法

多态实现

关于虚析构函数的问题

堆和栈区别

寄存器维护堆还是栈

说一下智能指针

宏是在哪个阶段进行处理(预编译),const呢(编译)

如何判断链表中是不是有环(我说了使用快慢双指针,然后又要我说另外的方法,提示是可以使用额外的内存空间)

说一下重载

1.说一下static关键字的作用
2.C和C++的区别
3.请你回答一下hash表如何rehash,以及怎么处理其中保存的资源
4.数据结构和算法部分:手写代码最长公共子序列,这个题我之前看过大佬写的文章https://labuladong.gitbook.io/algo,但是时间有点久了,想不太起来具体的代码内容了,好在还大致记着大佬给的套路,镇定下来慢慢回想,回来又重新看了下那篇文章,长舒一口气大差不差。
5.git中Merge和rebase区别

6.网络断开怎么感知,有没有处理,如果两个连接断开了但是没有数据交互怎么感知断开?

7.父类和子类构造函数析构函数调用顺序

四社招

一面

1,项目介绍
2,两道算法题
A: 分割字符串,如:abc=1&d=2, 输出 abc=>1, d=>2的KV结构,要求充分考虑边界问题
B: 两个无序链表A和B,按照奇数在前,偶数在后,局部有序(奇数有序,偶数有序),并且对重复数字去重
3,tcp粘包及怎么处理
4,redis缓存设计
5,设计系统,Q币和礼物系统,如果出现支付延迟怎么办,考验分布式强一致性
6,消息队列组件

二面
1,项目介绍
2,两个算法题
A: 去除字符串空格
B: 就字符串子集,如123,输出,1,2,3,12,13,23,123
3,tcp三次握手,backlog是干什么用的
4,innodb事务底层实现技术

三面
1,项目介绍
2,乐观锁和悲观锁区别
3,tcp四次挥手
4,主从同步重试机制,怎样保证重试数据完整

四面
1,项目介绍
2,tcp半链接队列攻击
3,mysql两种存储引擎及区别,底层实现
4,进程,线程,协程区别
5,分布式系统理解,分布式时序怎么做,最终一致性理解
6,快速排序思想,哨兵选择可优化点

五面
1,项目介绍,项目改进
2,mysql索引,为啥要用B+树,红黑树为什么不行?
3,redis使用场景,用过哪些功能
4,服务可用性改进
5,换工作原因

1、为什么不读博?(我脑子一蒙,说自己的科研能力到头了,当时我感觉我的面试也到头了)

2、TCP三次握手、四次挥手

3、TCP序号的作用(没答全)

4、TCP滑动窗口,拥塞控制

5、epoll实现机制,为什么返回的都是就绪的,和select的区别,为什么select不能做到

6、为什么采用单线程处理连接线程池处理事务的模式(我的小项目

7、高并发下还有哪些模式?

8、C++多态实现机制

9、为什么能实现运行时多态

10、C++存储数据区域

11、C和C++ static的作用。只答了c++的

12、static存放在哪个区?

13、十亿QQ号,查找某个QQ号在不在里面

14、常用的STL

15、常用STL底层实现

16、都看过什么书,为了做开发做了哪些准备?

17、 atoi函数的实现

1、一道编程题,数列相关,只通过了百分之三十

2、问了一下平时怎么调试,内存不断增长的话怎么判断哪里出了问题,调试方面问了很多,用了什么调试方式(我基本只打断点,所以很尴尬,全程啥也不会)

​ 3、虚拟内存寻址空间大小

​ 4、围绕着这道编程题展开了一堆问题,但是我已经忘了。。

​ 5、浏览器输入url按下回车发生了什么

​ 6、40亿个QQ号怎么存储

​ 8、CPU调度基本单位?

​ 9、平时关注那些库?

美团

一面:

项目:(下面的都不写了,基本上问的都差不多)

  1. 为什么想到用优先队列?优先队列如何实现?
  2. 数据库中的事务以及一致性问题;
  3. 数据库的底层实现(B+树,跳表);

数据结构与算法

  1. 手撕:三数之和(leetcode 15)
  2. 场景:在微博上关注了1k个大v,大v们每人有1w条微博,要想快速的访问前100条,应该怎么做?(排序+堆)

网络:

  1. web页面请求过程:在浏览器中输入一个网址到获得一个页面,这个过程中有用到哪些协议?(DNS + HTTP + TCP + IP + ARP;这个问题基本上可以将所有的网络协议串起来,是一个很好的问题,值得注意)
  2. HTTP报文格式;
  3. 访问一个网址和提交一段代码到网上有何区别?(GET和POST的区别)

Linux常用命令:

  1. 如何查看内存空间?如何查看磁盘空间?(free; df -h)
  2. 如何查看进程?(ps aux)

二面:

数据结构与算法

  1. 两个队列实现一个栈;
  2. 最长回文子串;(dp)
  3. 查找有重复元素的非降序列中第一次出现的数字;(变形的二分查找)

Linux命令:

  1. 一个文件"ip.txt",有两个字段ip(第一列)和访问时间(第二列),找出访问次数最多的ip;

    awk '{ips[$1]++;} END {for(ip in ips) printf("%s\t%d\n", ip, ips[ip]);}' ip.txt | sort -n -k 2 -r | head -n 1
    

(这道题主要考察了awk, sort, head和管道命令的运用,值得注意,另外还有像统计词频,杀死指定进程等也经常考察)

网络:

  1. TCP四次握手;(需要详细说明)
  2. 拥塞避免机制;
  3. web页面请求过程;

数据库:

  1. 索引:是什么?如何实现?
  2. sql引擎:有哪些?MyISAM和InnoDB的区别?B+树与B树的区别?

三面:

数据结构与算法

  1. 手撕:堆排序,并分析时间复杂度;
  2. 手撕:链表中环的入口节点,并解释原因;
  3. 二叉搜索树的特征,查找和插入的时间复杂度;
  4. 为什么说二叉搜索树有时会不稳定,如何改进?(可能会退化为链表;改进为平衡二叉查找树)
  5. AVL树大概的调整过程;(左旋右旋)
  6. 红黑树的特征以及大概的调整过程;

网络:

  1. OSI网络分层模型,TCP/IP网络分层模型?(7层;5层)
  2. 为什么TCP/IP去除了表示层和会话层?(没必要搞那么复杂)
  3. TCP与UDP的区别;(TCP实现了可靠传输;UDP不保证可靠传输;)
  4. TCP如何实现可靠传输;(超时重传)
  5. TCP的发送窗口大小如何确定?(拥塞避免)

系统:

  1. IO高并发如何实现?
  2. 线程与进程的区别?
  3. 为什么进程的切换开销比线程大?

拼多多

2面技术 + 1面hr,拿offer,11116

一面:

C++:

  1. 虚函数的实现;(虚表)
  2. 智能指针;
  3. lambda表达式;
  4. C语言如何实现面向对象编程;
  5. struct与class的区别;
  6. struct与union的区别;
  7. struct中的字节对齐机制;
  8. C++四种类型转换符(static_cast, dynamic_cast, const_cast, reinterpret_cast)各自的作用;

系统:

  1. 信号量机制;(整型、记录型、AND型、信号量集)
  2. 锁机制;(互斥锁、自旋锁)

网络:

  1. DNS的查询方式;(递归和迭代)
  2. HTTP与HTTPS的区别;(加密与否)
  3. HTTPS如何实现加密传输;(非对称加密机制)
  4. HTTPS的认证过程;
  5. TTL指的是什么?(Time To Live,生存时间,也是跳数限制)
  6. ARP协议;
  7. traceroute的过程;

数据结构与算法

  1. 如何实现topK;(堆)
  2. 手撕:数组中连续子数组的最大和;(dp)
  3. 字符串转化为数字;(注意细节处理)

二面:

网络:

  1. web页面请求过程;

数据结构与算法

  1. 数组中0,1,2分别代表三种颜色的小球,调整数组元素使得相同颜色的小球在一起,要求在时间复杂度为O(n),不能用额外空间;(双指针)
  2. 一个链表,value里面存了公司里所有人的年龄,希望你对这个链表做切分,切分出来的section越多越好,但是有一个条件:同一个年龄的人只允许分配到用一个section中,返回所有section的长度的数组;输入:29 -> 30 -> 31 -> 32 -> 31 -> NULL,输出:[1, 1, 3];(滑动窗口)

网易互娱

2面技术,拿offer,裁员和游戏技术栈窄

C++:

  1. 虚函数的实现;
  2. 构造函数声明成虚函数时,如何调用?(陷阱题,构造函数不能被声明为虚函数)
  3. 类型兼容规则;
  4. vector的push_back()方法的实现;
  5. map, unordered_map的区别;
  6. 左值与右值分别指什么?

网络:

  1. TCP、UDP的区别;
  2. TCP如何实现可靠连接;
  3. socket编程;

系统:

  1. cache一致性;
  2. 虚拟内存与物理内存的区别;

游戏设计题:

  1. 吃鸡中,如何实现游戏毒圈的缩小方法;(极坐标+随机数)

智力题:

  1. 海盗分金;(博弈论)
  2. 三个火枪手;(博弈论)

二面:

没有聊实质性的技术问题,主要聊了游戏中常用的计算机图形学和随机洗牌算法

头条

1面挂

一面:

C++:

  1. C++中哪些函数不能被声明为虚函数?(普通、内联、构造、友元、静态)
  2. 构造函数为什么不能被声明为虚函数?(派生类的对象在基类构造函数调用前还不存在)
  3. 友元函数可以被声明为虚函数吗?为什么?(不能,友元函数不是成员函数,不能被继承,不支持运行时多态)

网络:

  1. 在浏览器中输入一个网址,服务器是如何找到你的主机的?(不会)

数据结构与算法

  1. 手撕:字符串中回文子串的数目;(dp)
  2. 手撕:给你一个字符串,返回所有它能表示的IP地址;(回溯)
  3. 有10亿个数,如何找出其中最小的100个数;(堆)
  4. 说说堆排序的过程,建堆的时间复杂度是多少;(建堆+调整;O(n))

阿里

作者:Lee_1024
链接:https://www.nowcoder.com/discuss/351093?type=2&order=0&pos=11&page=3&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网

一面:(春招)

C++:

  1. vector和list中,删除末尾的元素,其指针和迭代器如何变化?若删除的是中间的元素呢?

算法

  1. 有两个很大的文件,如何找出其中相同的行?

系统:

  1. 管道命令如何实现?

二面:(春招)

算法

  1. 手撕:二叉树的后序遍历,递归和非递归;

场景:

  1. 两个很大的矩阵相乘,如何并行实现?(分块)

一面:(秋招)

数据库:问了很多关于sql的基本语法;

算法:手撕冒泡排序,并分析时间复杂度;

二面:(秋招)

算法

  1. 海量数据排序;(堆,归并)
  2. 最长回文子串

Linux命令:

  1. 写脚本杀死指定名称的进程;
ps aux | grep ${processName} | grep -v grep | awk '{print $2}' | xargs kill -s 9
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值