一面面了一个小时,二面一小时15分钟左右首先是我自我介绍,然后问了我实习在公司具体干嘛,然后问了下我的项目,最后就是八股和手撕代码,主要记录一下问的问题。答案是我面试完自己查的,可能不太准确,仅供参考。一面:1.请为百度搜索框设计测试用例?2.百度设计框上线前需要进行那些测试?界面测试,功能测试,性能测试,安全性测试,易用性测试,兼容性测试,UI测试。3.如何查看http状态码?以及每个状态码的含义?F12点击network,查看status。状态码200:状态码200表示服务器响应成功,也就是服务器找到了客户端请求的内容,并且将内容返回给客户端。状态码302:状态码302代表临时跳转。例如:URL地址A可以向URL地址B上跳转,但这并不是永久性的,在经过一段时间后,URL地址A还可能向URL地址C上跳转。状态码301 :状态码301和状态码302相似,不同的是状态码301往往代表的是永久性的重定向,值得注意的是,这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。这个“跳”的动作是服务器是通过回传状态码301来下达给客户端的,让客户端完成跳转。状态码304:服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。状态码403:状态码403代表请求的服务器资源权限不够,也就是说,没有权限去访问服务器的资源,或者请求的IP地址被封掉了。状态码404:状态码404代表服务器上没有该资源,或者说服务器找不到客户端请求的资源,是最常见的请求错误码。状态码500:状态码500代表程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。由于现在的浏览器都会对状态码500做一定的处理,所以在一般情况下会返回一个定制的错误页面。4.三次握手过程和为什么需要四次挥手?建立一个 TCP 连接需要“三次握手”,缺一不可:三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)是在计算机网络通信中用于建立和终止TCP连接的过程。它们分别用于在通信开始时建立连接,以及在通信结束时终止连接。三次握手(Three-Way Handshake):第一步(SYN):客户端向服务器发送一个同步序列编号(SYN)标志的数据包,请求建立连接。此时客户端进入 SYN_SENT 状态。第二步(SYN + ACK):服务器收到客户端的请求后,会回复一个带有确认(ACK)标志和自己的同步序列编号的数据包,表示接受连接请求,并通知客户端自己也准备好建立连接。同时,服务器也向客户端发送一个同步序列编号的数据包,作为客户端连接确认的一部分。此时服务器进入 SYN_RECEIVED 状态。第三步(ACK):客户端收到服务器的确认后,会向服务器发送一个确认(ACK)标志的数据包,表示连接已建立。此时客户端和服务器都进入已连接(ESTABLISHED)状态,可以开始进行数据传输。完成三次握手后,连接建立,双方可以开始传输数据。四次挥手(Four-Way Handshake):第一步(FIN):当一方(通常是客户端)希望关闭连接时,会发送一个带有终止标志(FIN)的数据包,表示它已经没有数据要发送了,但仍愿意接收数据。发送方进入 FIN_WAIT_1 状态。第二步(ACK):另一方(通常是服务器)收到终止标志后,会发送一个确认(ACK)标志的数据包,表示已收到终止请求。然后继续发送可能未传输完的数据。发送方进入 CLOSE_WAIT 状态,等待自己的应用层确认关闭。第三步(FIN):当另一方(通常是服务器)也没有数据要发送时,会发送一个带有终止标志(FIN)的数据包,表示它同意关闭连接。此时发送方收到 FIN 后进入 LAST_ACK 状态。第四步(ACK):最后,发送方(通常是客户端)再次发送一个确认(ACK)标志的数据包,表示已收到对方的终止请求。双方都进入 CLOSED 状态,连接正式关闭。通过四次挥手,连接在双方都没有数据要传输时被安全地关闭。这些握手和挥手过程保证了可靠的连接建立和关闭,确保数据的完整性和可靠性。只要四次挥手没有结束,客户端和服务端就可以继续传输数据!5.进程和线程的区别?(1)调度:线程作为处理器调度和分配的基本单位,而进程是作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以井发执行(3) 拥有资源:进程是拥有资源的一个独立单位,有自己独立的地址空间:线程不拥有系统资源,但可以访问隶属于进程的资源,共享进程的地址空间.(4)系统开销:在创建或撒消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。6.发生死锁的原因以及如何避免死锁?四个必要条件:1.互斥条件2.不剥夺条件3.请求和保持条件4.循环等待条件。常用解决死锁的方法(1)如果不同程序会并 发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。(2)在同一个事务中,尽可能做到一次锁定所需要的所有资源,减少死锁产生概幸。(3)对于非常容易产生死锁的业务部分,可以兰试使用开级锁定颗粒廈,通过表级锁定来减少死锁产生的概率。(4)使用分布式锁或者乐观锁。7.redis和mysql的区别?1.存储的位置不同,mysql主要是将数据存储在物理硬盘上的,redis主要是将数据存储在内存中的。因为这点就会产生许多不同。物理硬盘成本更低,断电也仍然存在,更加安全可靠,但是基于硬盘的io操作会更加耗时。而redis将数据存储在内存中,断电就消失,所以相对而言会不安全一些,而且内存的成本比硬盘更高,但是基于内存的读写效率会更高。2.存储数据的形式不同,mysql数据是存储在表中,表中有许多的字段,每条记录里包含多个字段,每个字段有不同的含义。而redis存储数据是以键值对的形式,一个键对应一个值。8.事务的四大特性以及每个特性的含义?1.原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行先败。2.一致性E(Consistency):官网上事务一致性的概念是:事务必须使数据库从一个—致性状态转换到另外一个一致性状志。换一种方式理解就是:事务按照预期生效,数据的状态是预期的状态。举例说明:张三向李四转100元,转账前和转账后的数据是正确的状态,这就叫一致性,如果出现张三转出100元,李四账号没有增加100元这就出现了数据错误,就没有达到一致性。3. 隔离性(Isolation):事务的隔高性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔高。4持久性 (Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改交就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。9.Linux常用命令:修改文件命令,grep命令?vi/vim命令:用于编辑文本文件,可以修改文件内容、添加、删除、复制、粘贴等操作。nano命令:也是一个文本编辑器,比vi/vim更简单易用,适合初学者。cp命令:用于复制文件,可以将一个文件复制到另一个目录或重命名。mv命令:用于移动文件或重命名文件,可以将一个文件移动到另一个目录或改变文件名。rm命令:用于删除文件,可以删除单个文件或整个目录。chmod命令:用于修改文件权限,可以设置文件的读、写、执行权限。chown命令:用于修改文件所有者,可以将文件的所有权转移给其他用户。sed命令:用于编辑文件内容,可以进行文本替换、删除、插入等操作。Linux grep (global regular expression)命令用于查找文件里符合条件的字符串或正则表达式。grep 指令用于查找内容包含指定的范本样式的文件。10.Linux下软连接和硬链接的区别?Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。【软连接】另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。11.Linux管道符?“|”是管道符,用于多重命令处理,前面命令的输出作为后面命令输入。12.sql题,查找person(id,email)的重复邮件13.算法题:两数之和14.软件的测试分为哪几个阶段?软件测试分为四个阶段- 单元测试阶段、集成测试阶段,系统测试阶段,验收测试阶段。单元测试阶段:单元测试是以最小单位的测试、 也是最初期的测试阶段、一般是以一个西数方法窗口。一个功能模块都可以看做是个单元,主要依据的是详细设计文档。主要以白盒为主,一般有开发人员完成。集成测试阶段:集成测试又称组装测试,在单元测试的基础上把软件逐渐组装起来一起继续测试的过程。逐渐组装的过程中会出现很多临时版本(迭代测试)。集成测试主要以黑盒为主(当然接口测试也在这阶段进行)。系统测试阶段.整个功能全部完成后对集成了硬件和软件的完整系统进行模拟真实的环境模拟,测试重点主要在于1)鍫个系统能舌正常运行2)真个系统的兼容性测试验收测试阶段:由用户参与完成的过程。二面:1.什么是软件测试?软件测试(Software Testing),其经典定义或是标准定义:在规定的条件下对程序进行操作,以发现程序错误。通俗来讲,就是通过“人工”或“自动化”的手段,来测试某个程序或系统,进而检验其是否满足规定的需求或是弄清预期结果与实际结果之间的差别。2.Spring和 Springboot的区别?Spring Boot就是Spring的完善和扩展,就是为我们便捷开发,方便测试和部署,提高效率而诞生的框架技术。1、Spring Boot提供极其快速和简化的操作,让 Spring 开发者快速上手。2、Spring Boot提供了 Spring 运行的默认配置。3、Spring Boot为通用 Spring项目提供了很多非功能性特性。3.常见的测试工具和测试框架?测试管理工具:禅道,持续集成工具:Jenkins,接口测试工具:jmeter,postman4.测试流程包括什么?步骤一:需求分析步骤二:制定测试计划步骤三:设计测试用例、编写测试用例步骤四:实施测试(执行测试用例)步骤五:提交bug,提交缺陷报告步骤六:生成测试总结和报告5.介绍JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。6.介绍DNS协议和DNS的查询算法?DNS是 Domain Name System 的缩写, 域名解析系统,就是根据域名查出对应的 IP地址。是一种分布式数据库系统。查询算法:迭代查询和递归查询。7.网络模型的7层结构?从下到上:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。8.http协议全名,在第几层?以及常用的请求方式?全称为Hyper Text Transfer Protocol(超文本传输协议),在应用层,请求方式:GET,POST,PUT,DELECT,OPTIONS,CONNECT,TRACE9.sql题:一条语句查出每个班的及格人数和不及格人数?10.给定一个非空整数数组,除了某个元素只出现一次以外,其余元素均出现多次,找出只出现一次的元素?#我发现了面试通关密码#
点赞 5
评论 5
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务