百度测开实习 他人面经整理

该博客涵盖计算机网络、操作系统、算法等面试题。网络方面涉及OSI模型、TCP/IP协议层、HTTP操作及端口;操作系统有CPU调度算法、虚拟内存映射、死锁原理等;算法包含排序、查找、深度搜索等,还有测试方法、C语言内存分配等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一面:

计算机网络:

 

说一下OSI包括几层?分别是什么?

OSI参考模型分为七层结构,从下到上顺序依次为:

OSI (开放系统互联(Open System Interconnection))

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

各层的作用

  1. 物理层功能:

利用传输介质为数据链路层提供物理连接,负责处理数据传输率并监控数据出错率,实现数据流的透明传输。

  1. 数据链路层:

在物理层提供的服务基础上,数据链路层在数据实体之间建立数据链路连接,传输以帧为单位的数据包,在采用差错控制和流量控制方法,是有差错的物理链路便成无差错的数据链路。

  1. 网络层:

为分组通过网络选择合适的路径,实现路由选择和分组转发拥塞控制等。

  1. 传输层:

向用户提供的端到端服务,处理数据报错误,数据包次序,向高层屏蔽了下层数据通讯细节。

  1. 会话层:

维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。

  1. 表示层:

用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。

  1. 应用层:

为应用软件提供服务。

 

 

TCP属于OSI哪一层,IP属于哪一层?

TCPTCP/IP的第三层传输层,对应OSI的第四层传输层;
IPTCP/IP的第二层互联层,对应OSI的第三层网络层。

 

HTTP有哪些操作,常用端口是多少?

Get 、post 、put 、head 、options 、delete

HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080

HTTPS服务器,默认的端口号为443/tcp 443/udp;

 

操作系统:

 

CPU调度算法?

批处理系统中的调度算法:

先来先服务: FCFS:

优点:实现简单

缺点:可能造成周转时间长

2.最短作业优先 SJF(非抢占式)

优点:平均周转时间最短

缺点:不公平,短任务多时,长任务一直得不到执行,产生starvation。

3. 最短剩余时间优先 SRTN :Shortest Remainning Time Next

SJF的抢占式版本

4. 最短相应比优先 HRRN:highest response ratio next

是一个综合考虑的算法

调度时,先计算每个进程的响应比,之后总是选择响应比高的执行。

 

交互式系统中的调度算法

1.RR-round Robin (时间片轮转):

目标:为改善短任务的平均响应时间

主要思想:

1.周期性切换

2.每个进程分配一段时间片

3.利用时钟中断进行进程切换

 

物理内存和虚拟内存,虚拟内存如何映射?

物理内存:在应用中,真实存在的,插在主板内存槽上的内存条的容量的大小。从本质上来说,物理内存是代码和数据在其中运行的窗口。

 

虚拟内存:使程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

 

死锁?会不会写代码,(不会写代码,大致说了一下死锁的原理)

死锁产生的4个必要条件

    1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。

    2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。

    3、不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。

    4、循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

 

当以上四个条件均满足,必然会造成死锁,发生死锁的进程无法进行下去,它们所持有的资源也无法释放。这样会导致CPU的吞吐量下降。所以死锁情况是会浪费系统资源和影响计算机的使用性能的。那么,解决死锁问题就是相当有必要的了。

我们可以通过破坏死锁产生的4个必要条件来 预防死锁,由于资源互斥是资源使用的固有特性是无法改变的。

进程与线程的关系?

 

二面:

学姐、学长总结的面试题  感谢学姐(针对质量部测试开发)

1.几种常见算法看下,能够大概描述出来算法的过程,复杂度(排序、查找等)

2.给你设定几种场景,让你解答:比如给你两部手机,让你站在一百层楼高的地方,假设在第n层手机摔下就会摔破,问你怎样用着两部手机确定这个临界层。

(场景测试-百度质量部)

3.怎样知道一个链表里是否有环的存在,以及确定环的位置  如何确定两个链表是否有相同的部分

4.网络一些知识,比如http几次握手的情况,ack等包,结束是否只能由服务器段先断开之类的。网络几层,常见网络设备属于哪层?

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 

第一次握手:建立连接时,客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

5.测试几种方法.

黑盒测试(black-box testing):只关心输入和输出的结果
白盒测试(white-box testing):去研究里面的源代码和程序结构
静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程
  1. 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。 桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。 (2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。 集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。 (3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。 系统测试的主要依据是《系统需求规格说明书》文档。 (4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。
 

6.给定一个很大文件,内存里放不下,怎样搜索里面是否有需要的关键字,从百度搜索内容,描述一下大致的过程

搜索大文件放不下时,可以按照规则将大文件分割成内存可以放下的小文件,然后依次将小文件调入内存,进行搜索。

如果对于搜索结果有一定限制,比如找到出现次数最多的关键字,分隔文件时hash将相同关键字放到同一文件,对每一小文件统计最多次数,然后再比较所有小文件。

 

8. C语言 内存分配机制(堆栈区别,静态存储区)       

栈区(stack)—  由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。  

 堆区(heap   一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。  

全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。  

文字常量区  —常量字符串就是放在这里的。程序结束后由系统释放。

程序代码区—存放函数体的二进制代码。  

9. 数组指针和指针数组有什么区别 

12.深度搜索算法        单链表 就地 反转 

13.Linux常见的命令看看(必考) 

ls命令  cd命令  pwd命令   mkdir命令   rm命令    rmdir命令

man 命令 功能:man命令格式化并显示某一命令的联机帮助手册页。

cp命令

mv命令

功能:mv命令对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。 

14TCPUDP的区别

16socket

 

1.Linux内核有一定的了解;  

2.熟悉数据库的使用,

4.了解TCP/IP协议

5.测试流程  有几种方式像什么白盒 黑盒   功能测试  性能测试 单元测试等等 

 

实际遇到的面试题

一面

首先要自我介绍

 

1、进程与线程的区别 

 

2、标准模板库STL 用过的库函数 (一面)

Fill函数    sort    map.find   set.find   

String字符串中的 find substr erase insert length 都要很熟练使用

          stoi to_string 能让整形与字符串互相转换 

3、做过的有关测试的项目,没有问很细,测试用例是不是自己写的,根据做的项目,设计怎么测试自己的项目

 

4、静态函数库、动态函数库 区别 自己做的项目是属于动态的还是静态的

 静态函数库

    这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译

动态函数库

这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。

 

算法题

1、在栈中,找出最小值,给出push pop 求最小值min函数(不破坏栈的原始的顺序、用最小的时间)

用两个栈即可解决。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值