测试开发岗位春招常见面试题汇总

序言

本贴是我在测开岗位面试中常见的面试题,以及我认为面试官会在春招常考的一些问题,大家可以针对性的复习

编程语言 C++

  • c++机制
  1. C++与C的区别
  2. 内存覆盖怎么回事?
  3. 内存泄漏有哪几种情况以及如何解决
    情况:在类的构造和析构函数中未成对使用new/delete操作符;使用了野指针(未初始化的指针/指针所指地址已被释放/指针操作超越了作用域);未正确清除嵌套的对象指针等
    解决:使用智能指针(shared_ptr、weak_ptr、unique_ptr)
  4. C++与Java的区别
    执行速度、是否面向过程、指针、是否多继承、GC垃圾回收机制、是否可重载等
  5. 内存的分配方式
    静态分配、栈区分配、堆区分配
  6. 内存分配有哪些区
    堆、栈、常量区、全局区、代码区
  7. 内存分配中堆和栈的区别
    管理方式、空间大小、碎片、生长方向、分配效率
  8. C++11的新特性你知道哪些,用过哪些
    auto
    nullptr和NULL的区别
    智能指针
    并发编程

  • 面向过程

1.*指针/&引用的区别
内存、sizeof后大小、初始化、指向是否可变、++含义、是否有多级
2.const/define区别
定义数据类型、安全性检查、是否可调试
3.typedef/define区别
用法、所在处理过程
4.sizeof/strlen的区别
5.内存对齐是怎么回事
6.extern的作用
7.struct(c++)与class区别
默认成员权限、默认继承权限、内存
8.c++和c中的struct的区别
图片说明
9.sizeof、strlen、size、length区别
10.函数模板 template 用法
11.new/delete与malloc/free的区别
12.++i,i++的区别和源码 *
13.#include<>和#include""的区别 *


  • 面向对象

1.三大特性
封装、继承、多态
2.执行构造函数/析构函数的顺序
3.重载和重写的区别
4.虚函数介绍一下
虚函数表
5.多态方式
动态多态、静态多态
6.纯虚函数使用方法
7.C++中拷贝赋值函数的形参能否进行值传递


  • 容器STL

1.map/set的底层实现和区别
2.vector/list区别

数据结构

  • 十大排序
    1.冒泡排序 O(n^2) * 稳定
    适用于基本有序、数据量小序列
    2.选择排序 O(n^2)
    3.插入排序 O(n^2)(直接插入,折半插入)
    4.希尔排序 O(nlogn)
    5.归并排序 O(nlogn)
    6.快速排序 O(nlogn) * 不稳定(枢轴改进方法)
    7.堆排序 O(nlogn) * 不稳定
    8.计数排序 O(n+k)
    9.桶排序 O(n+k)
    10.基数排序 O(nk)
    重点是上面带
    的排序算法源码,以及稳定性。其余算法了解即可,会源码更佳。

  • 二叉树
    1.遍历
    前序,中序,后序遍历
    递归,非递归
    2.平衡二叉树
    插入自调整
    LL,RR,LR,RL
    3.红黑树 *(了解即可,不需要手撕)
    应用:c++ set/map java HashMap(数组+链表+红黑树)
    当链表长度太长(默认超过8)时,链表就转换为红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。

    五大性质:
    性质1. 节点是红色或黑色。
    性质2. 根节点是黑色。
    性质3.所有叶子结点都是黑色。(叶子是NIL(值为空且黑色)节点,虚拟出来的)
    性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
    性质5.. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。黑色完美平衡

与平衡为二叉树对比(或问,为什么c++和java底层不用平衡二叉树)

图片说明

4.B、B+树
应用:操作系统的文件索引和数据库索引
性质与区别:请自己查阅

为什么说B+tree比B树更适合实际应用中操作系统的文件索引和数据库索引?
图片说明


  • BFS、DFS

数据库

  • 写一个sql语句
    推荐大家先复习完语法后刷牛客/LeadCode上的sql题,中等练完就行,要求不太高

    重点:
    增删改查
    多表查询
    排序 ORDER BY (AESC/DESC)
    聚合
    图片说明


  • 图片说明

    • 多表查询

    1.交叉连接 CROSS JOIN
    2.自然连接 NATURALC JOIN
    3.外连接 *(重点)
    左连接
    右连接

    图片说明

4.左连接时on/where 的区别

计算机网络

  • 模型 *
    七层IOS模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
    4层TCP/IP模型:网络接口层、网际层、传输层、应用层
    5层综合模型(谢希仁版):物理层、数据链路层、网络层、传输层、应用层

    各层的作用(字节、阿里问过)

  • 网络层
    1.IPv4
    1)地址格式
    点分十进制
    2)地址划分 了解
    A/B/C/D/E类

    2.网络地址转换NAT 了解
    图片说明

    3.路由传输协议
    RIP 基于距离向量的选择
    OSPF 开放 最短路径协议
    了解算法内容即可

  • 传输层
    1.TCP
    1)特点 *
    面向连接、全双工,面向字节流、可靠传输、有拥塞控制、开销大

    2)首部字段
    序号 seq
    确认号 ack
    控制位 ACK FIN SYN
    检验和(阿里问过)

    3)如何实现可靠传输 *
    校验和、排序(流量控制)、确认机制、重传机制、拥塞控制

    2.拥塞控制 *
    慢开始、拥塞避免、快重传、快恢复
    算法过程

    3.三次握手建立连接 *
    1)过程
    图片说明

    2)改成两次握手可以吗,为什么
    不可以
    3)改成四次握手可以吗,为什么
    可以,但没必要

    4.四次挥手释放连接 *
    1)过程
    2)改成三次挥手可以吗,为什么
    不可以
    3)客户端收到第二次挥手信息可以关闭监听吗,为什么?
    不可以

    5.UDP
    1)特点 *
    面向无连接、尽最大努力交付、面向报文、无拥塞控制、开销小
    2)TCP与UDP的区别 *
    图片说明
    3)TCP与UDP的应用场景
    TCP:HTTP
    UDP:直播
    QQ通信:TCP与UDP

  • 应用层
    1.HTTP *
    1)请求报文与响应报文的格式

    2)请求方法
    图片说明

    post/get的区别
    幂等、缓存、浏览器历史、安全性、可见性、size

    3)状态码
    图片说明

4)HTTP的无状态特性如何解决
cookie和session

2.cookie和session的区别

3.DNS解析过程 *

4.https *
1)http与https的区别

2)SSL通信过程(了解)

3)非对称加密与对称加密区别

5.浏览器输入url发生了什么

  • 其他常用协议有哪些
    HTTP FTP DNS SMTP DHCP 等

操作系统

  • 进程 *
    1.进程间的通讯方式 IPC
    图片说明
    2.僵尸进程是什么

当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程

3.如何解决僵尸进程

  • 线程 *
    1.线程间的通信方式
    图片说明

    2.进程与线程的区别 *
    本质、拥有资源、切换开销、共享资源程度

  • 死锁
    1.产生死锁的必要条件 *

    互斥
    不可剥夺
    请求并保持
    循环等待

    2.解决死锁的方法
    图片说明

  • 内存管理(了解)
    图片说明

Linux常用命令

一般面试官都会问:你知道哪些linux常用命令/你用过Linux系统吗

也会出一些简单的问题让大家写命令

这部分推荐大家看《Linux环境编程》——姜林美(我们学校老师出的书,当时选修课就是他上的,hhh)动手操作,然后平时多用linux系统。我当时无论课程还是项目部署都接触linux系统比较多,所以比较熟悉,大家还是多练

  • 常用命令 *
    ls 显示文件或目录
    mkdir 创建目录
    cd 切换当前工作目录
    touch 创建空文件
    echo 可以输出内容到标准输出,以空白分割字符串,并且后面增加换行
    cat 查看文件内容
    cp 拷贝文件
    mv 移动或重命名文件
    rm 删除文件

    -r  递归删除,可删除子目录及文件
    -f   强制删除

    find 在文件系统中搜索某文件
    wc 统计文本中行数、字数、字符数
    pwd 显示当前目录的绝对路径 *
    scp 复制文件从远端服务器到本机或反过来

    scp local_file remote_username@remote_ip:remote_folder
    图片说明

  • scp问题(了解)
    scp 复制后如何查看是否完全复制?

    在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。

    解决方法
    使用【md5sum命令】

  • 系统管理命令
    stat 显示指定文件的详细信息,比ls更详细
    top 动态显示当前耗费资源最多进程信息

    -n 设置信息更新次数
    -d 设置信息更新时间
    -p 显示指定的进程信息

    free 显示内存状态
    ps 显示当前进程的状态
    du 显示目录或文件的大小。
    df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息

  • vim(了解,也不常问到,但得知道)
    图片说明

  • linux三剑客(了解)
    grep *
    sed
    awk


大家如果觉得有帮助,可以一键三连 点赞、收藏、关注走一波

你们的支持是我更新的动力

#面试高频考点汇总##面经##校招##测试开发工程师#
全部评论
挺全面的,把这些吃透确实能提高不少,但实战经验也很重要呀。网易面试官邀你一起实战,三个机会,4月初截止,速来!https://www.nowcoder.com/discuss/610659
1 回复 分享
发布于 2021-03-20 12:10
浏览器里输入url里发生了什么?输入框里显示了你输入的值。🤣
1 回复 分享
发布于 2021-03-19 20:02
楼主的答案已更新: https://www.yuque.com/docs/share/a48f9628-c959-4ed2-8e9e-8b3571d8d2b8?# 《测试开发岗位春招常见面试题汇总》 需要的自取,不断更新中!!!!!!!!!!
4 回复 分享
发布于 2021-03-24 12:03
测开招人,需要内推,查看帖子, 冲鸭: https://www.nowcoder.com/discuss/618018
点赞 回复 分享
发布于 2021-03-21 06:53
强啊校友啊
点赞 回复 分享
发布于 2021-03-21 00:32
建了个22届大厂实习交流群,欢迎大家私我拉进群,纯交流不商业化,都是BAT大佬
点赞 回复 分享
发布于 2021-03-20 11:32
感觉记不住,有什么好办法么
点赞 回复 分享
发布于 2021-03-20 11:07
好强啊,插个楼,需要内推:
点赞 回复 分享
发布于 2021-03-20 00:23
大佬呆呆我😘
点赞 回复 分享
发布于 2021-03-19 21:30
哇,感觉很不错啊,我要收藏学习学习。借楼招收测试开发22届小伙伴,急缺简历,部门:阿里ICBU技术部,对测试开发感兴趣的可投hehuan.he@alibaba-inc.com。内推及时跟进流程的哦,来吧,一起做同事吧~😋
点赞 回复 分享
发布于 2021-03-19 19:10
BD
点赞 回复 分享
发布于 2021-03-19 19:09
感谢同学的整理与汇总~京东卡已经在路上啦~😉 ---------------------- 邀请大家参加春招高频面试考点整理活动呀~ 总结面试高频考点,领100元京东卡!【技术/硬件专场】 技术/硬件专场:https://www.nowcoder.com/discuss/611345
点赞 回复 分享
发布于 2021-03-19 16:38
@一只酷酷熊 求加精😁
点赞 回复 分享
发布于 2021-03-19 16:25

相关推荐

两点面完京东火速三点面字节,哎感觉有点神志不清了同时面试官这里我的简历还是前年的,一直没更新过,感觉完全发散想到什么问什么,给我绕晕了移动os部门1&nbsp;自我介绍2&nbsp;介绍一段实习经历2.1用的都是Java开发,字节内部大部分是go,转语言学习大概需要多久(回复几周时间,可以看情况调整进度)2.2实习时间安排2.3拷打实习项目3&nbsp;MySQL聚簇索引跟非聚簇索引区别是什么4&nbsp;MySQL事务隔离级别5&nbsp;可重复读解决了什么问题6&nbsp;间隙锁是什么,发挥什么作用7&nbsp;MySQL的int占几个字节,bigint占几个字节(4,8&nbsp;当时这里有点忘了不太确定,面试官一点反馈没有我还以为自己说错了)8&nbsp;utf8下,varchar(20)最多放几个字符9&nbsp;int11是什么意思?(宽度的意思?这个当时是真想不起来了,后边一查这玩意MySQL8.0都废弃了)10&nbsp;如何解决大数据量下的深分页问题11&nbsp;Redis在项目中主要起什么作用12&nbsp;Redis热key可能会出现什么问题,如何解决13&nbsp;Redis常见数据结构,分别有什么作用13.1&nbsp;zset为什么可以做排行榜13.2&nbsp;zset底层跳表是个什么结构,是如何根据score排序的(这里一点没答上)14项目中都是单体部署的吗?(回答有用到集群,但也不接着问,有点莫名其妙)15&nbsp;小程序端发送请求到服务端的过程(只答上了dns解析与tcp连接,没准备过)16&nbsp;tcp三次握手的过程,为什么需要三次17&nbsp;有用过消息队列吗?(实习中用过,但也不继续问)手撕sql,有员工表e,部门字段d,查询部门人数多于50的部门,select&nbsp;d&nbsp;from&nbsp;e&nbsp;group&nbsp;by&nbsp;d&nbsp;having&nbsp;count(*)>50,当时没怎么想就写上了,然后马上就给我出下一题手撕&nbsp;分割回文串&nbsp;回溯那道先说了下思路,回溯枚举,同时判断是否为回文串,结果面试官一直揪着判断回文串问,因为我说的是双指针头尾遍历,先问我时间复杂度是多少,又让我优化,但是题解上灵神也是这么写的,我看了十分钟也没想到怎么优化,于是先让我写,结果又写了十分钟边界没处理好,面试官说就这样吧进入反问面试表现,有什么建议吗?答:&nbsp;可以多去大厂实习(...是我不想吗,那你给我过了不就好了)这回答的我有点蒙,也没问业务就结束了暂时想起这么多,面完京东有点晕,都忘了开录音了,不过现在面完三个多小时还没发感谢信,已经知足了,上次面懂车帝半个小时就发感谢信了
查看24道真题和解析
点赞 评论 收藏
分享
这次面试是压力面,一点答不上来,可能是我一个月都在看go,边看边面,cpp的八股忘球了,除了cpp这块,别的也算基础吧,一直够不到他的点上,再或许是因为面试的前一分钟收到了携程的英语测评,哈哈哈,这种爽和紧张交加的感觉谁懂),感觉是对着effective&nbsp;cpp这本书问的,打算看看里面的笔记。已挂(很多都没回答好,面试官压力感太强了)深度八股盛宴平时都用cpp吗?(这里如果说用go&nbsp;and&nbsp;cpp也不至于死这么惨)1.说说static关键字的作用(这里没对比c和cpp,导致的追问环节一&nbsp;&nbsp;局部static变量:生命周期从第一次执行到程序结束,只初始化一次,函数退出不销毁二&nbsp;全局static变量/函数:限制作用域在当前文件(不暴露给其他编译单元)三&nbsp;类static成员变量:被所有类对象共享,类外初始化四&nbsp;类static函数:不依赖具体对象,只能访问static成员)2.cpp的闭包(没听过,说只看过go的闭包,后面说想问lambda,可以捕获外部变量(值或者引用),生成一个匿名函数对象,捕获方式有[=]&nbsp;[&amp;]&nbsp;[this]&nbsp;[a,&amp;b])3.cpp的lambda了解吗?说说lambada和普通函数的区别(接2问的,就说在算法题的cmp函数里面用过,使语法简洁,可读性高。“对比一下go的闭包是语法级别的,cpp闭包本质是编译器生成的仿函数”Lambda是一个带状态的函数对象,编译器为他生成一个匿名类型,可以捕获状态,可以内联,普通函数是无状态的,而且拥有唯一的函数签名,他们定义位置也不一样(普通是全局和类内,lambda是局部和全局))4.说说extern&nbsp;C关键字?(说成extern,不知道extern&nbsp;C)extern&nbsp;&quot;C&quot;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;#include&nbsp;&quot;some_c_lib.h&quot;}用于c/cpp混合编程,保证符号可识别。---此刻脑子已经麻了,太紧张了5.没了解过extern&nbsp;c,就说说cpp左值和右值的区别(这里把右值引用&amp;&amp;说成右值改左,悲,std::move左改右没说错。”左:有内存地址,可多次使用、可出现在赋值号左边,右:临时的、无地址、通常是字面量或函数返回的临时对象,判断标准就是是否能用&amp;取址“)6.说说完美转发(这里没问题,保持参数的属性不变(即左右值),传递给下一个函数,万能引用T&amp;&amp;,说了std::forward,”没有完美转发,右值传两层就是左值,失去移动语义“)项目8.说说项目整个流程呢?(这里很深入很仔细地说,导致有点口齿不清,或者说浪费太多时间了)9.webserver应用在七层网络架构哪一层?(应用层)情景题10.描述真实场景,公网一台服务器是怎么准确找到局域网里某一台设备上来的?比如你的手机。也就是说,你的手机把一个请求发送到公网服务器,然后公网服务器处理完之后,把处理完的消息返回给你的手机?先说说怎么找到服务器,然后服务器怎么找到你?(以为是我手机输入baidu.com然后服务器找到我,大概说了&nbsp;一下请求怎么到公网服务器)没这么简单,请说出更底层的协议是怎么找到的?比如为什么找到的是你的手机而不是别人?或者可以先不说复杂局域网,先回答我局域网的互相交互?(arp协议,ip-&gt;mac地址,交换机/路由器根据mac转发)请拓展一下,拓展到外网到局域网?最关键的点就是说怎么被标识?(不懂,被路由器的公网&nbsp;IP&nbsp;+&nbsp;一个临时端口号标识的)局域网的手机在外网看来是怎么银行的,怎么保证是发到这个手机,而不是所有手机?(不懂,当时扯到了tcp四元组,这个思路没问题,答案就是内网ip,内网端口,公网ip,公网端口)你可以按照你的想法去分析一下?它能代表这个局域网对外通信,然后官网某一个服务器把消息投递过来,根据唯一的ip找回来,对吧?(这里回答的NAT协议)那是怎么标识的?(答的路由表,有mac地址,实际是nat表)(思路:手机首先是&nbsp;没有公网ip的,使用nat技术,维护一张映射表(内网ip端口&lt;-&gt;公网临时端口)不会错发是因为nat表的映射是一对一的,除非端口冲突或者没有nat穿透(这里必然被追问穿透,我是没讲这里))11.mac地址是哪一层?(数据链路层)12.所以你前面跳过了很多层对吗?(数据链路层到xx层一路解包,这个过程有点忘记了,因为八股不常见,磕磕绊绊)(思路:物理层01比特流-&gt;数据链路层(检查mac地址)-&nbsp;&gt;(网络层检查dest&nbsp;ip)-&gt;传输层(端口号)-&gt;应用层)13.上一面udp和tcp挖完了,你听说过quic协议吗?(在应用层使udp可靠,http3使用,这里想扯到抖音直播表达被打断)别发散(说了减少对头阻塞,和快速握手)quic对比tcp的优点?不能对比udp,只能说除了udp对比tcp的优点外的优点(1.应用层保证了消息可达,后面网络延迟,他不问了)(思路:quic基于udp,内建了加密和多路复用,0-rtt直连-&nbsp;无队头阻塞-&nbsp;连接迁移(Connection&nbsp;ID)-&nbsp;用户态实现,易迭代)14.epoll里面的reactor和proactor的对比,区别?(proactor是异步,是内核直接去处理缓冲区的数据,而不是依靠主线程io,目前nginx就是利用多进程去模拟proactor,proactor是我昨晚,你来取结果)说说同步和异步的对比?(同步处理以来非阻塞队列,异步无需考虑,内核态处理)15.遍历二维数组,按行和按列,那个快(说的内存连续)但是内存不是随机访问吗?(虚拟内存部分)给我说清楚访问过程(扯了vector是怎么被访问的,说的有点磕磕绊绊,大概size是怎么二倍增长)虚拟内存为什么存在?(扯物理内存和os怎么一步步到虚拟内存,为了解决内存碎片化的问题,总之就是块不连续)那物理内存是怎么映射到物理内存(linux就是四级页表,为什么有页表,为什么要有页框,四级页表如何逐级映射,给我说死了)(思路:内存连续还有空间局部性,同一行cache&nbsp;line被连续访问,缺页次数少,命中率高虚拟内存:隔离进程地址,让程序认为有连续内存,允许物理内存不连续。映射:四段索引,页目录-&gt;页表-&gt;页框-&gt;物理地址)16.中间件主要用的mysql?(目前redis和mysql)算法找旋转数组的最小值,说出思路开撕,二分秒了,怎么二分,画图解说,然后假设是连续的数组,加入没有旋转,代码怎么跑?(诶,我真的就死这里了)后面自己找出了bug,说很好奇,为什么自己越界访问,飞书没报错。引出1717.什么会导致cpp未定义行为()类似hr面的问题18.你是人工智能专业,为什么没有人工智能?前10%是什么水平?19.怎么用的ai(角色+上下文背景+todolist,说我太啰嗦,还可以总结)20.评价自己(这里踩雷了,说自己可靠加神搓搓)优点就这一个?缺点就这一个?(被为难死了)21.你的同学怎么评价你?(神搓搓,能干事但干的不是特别好)建议体系化表达,其余看邮件(那就是挂了)这里也踩雷了,问到了一些面试官隐私的问题。目前这个部门在做一些c端的产品。后续心已飞去携程,让hr催,hr催一次,说要考虑留我,催hr两次,得知已挂。简历被锁,清明后释放。秋招见,字节
零零幺零零幺:计网和os的盛宴了
查看26道真题和解析
点赞 评论 收藏
分享
牛客60994521...:提示词我把题目计费规则搬了上去,然后给它讲了一下基本要求,放了3个输入输出样例,到了50%。我发现放样例的数量很关键
阿里笔试
点赞 评论 收藏
分享
评论
127
842
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务