面试题的个人理解(待更新......)
1、对进程号和端口号的理解
端口号唯一,就如同身份证号,进程号不唯一,如同姓名,一个身份证号只能对应一个姓名,但是姓名不唯一,相同姓名随处可见,也有姓名比较罕见的,但是至少会对应一个身份证号,同姓名的则会对应多个身份证号,未出生的则会有预留的身份证号等待着他们,所以总结就是:端口号只能对应一个进程号,而一个进程号至少对应一个端口号,也可以对应多个端口号,未占用的端口号则继续等待着以后的进程号来占用。
2、TCP与UDP的区别?
TCP是传输控制协议,传输时间长、速度慢,但是安全性高、稳定性强,是需要经过三次握手的协议,UDP与之相反,它是用户数据报协议,是只管发送,不考虑接收到的协议
TCP是面向连接、可靠数据传输协议;UDP面向无连接、不可靠的数据传输协议
3、谈谈TCP三次握手,以及为什么不是两次
首先客户端发送syn报文给到服务端,服务端接收到之后实现第一次握手,服务端则发送syn+ack报文响应客户端,客户端接受之后实现第二次握手,客户端再响应服务端发送ack报文,服务端接收到后实现第三次握手。然后服务端就可以返回数据给客户端,其本质就是为了确认双方都具备收发数据的能力。
在第二次握手后,如果客户端没有收到服务端的回应,那么服务端就会对已建立的连接保存必要的资源,如果出现大量这种情况,服务端会崩溃。
4、谈谈软连接与硬链接的理解
软连接创建方法是ln -s 源文件 目标文件,不加-s就是硬链接。软连接可以理解为win中的快捷方式,当你点击它时操作系统会直接帮你找到这个链接的真实目录。而硬链接则相当于给它取了个别名,或是创建了个镜像,本质上来说,它就是源文件,当你创建硬链接后,系统会把这个目录下所有的文件都再做一次硬链接(复制一份过去),这样系统在访问这个链接时就要不断的去遍历,增加复杂度。
使用限制上,软连接可以对空目录,可以跨文件系统,可以对不存在的文件创建,而硬链接则不行。
5、谈谈相对路径和绝对路径的理解
绝对路径:以根目录/为起点,向下递归;
相对路径:以当前目录为起点,向上或向下递归,不用以/开始,其中.代表当前目录,..代表上一级目录,~代表home目录。
6、谈谈访问一个网址的流程
首先计算机会访问系统的本地文件,就是etc目录中的host文件,不同系统具体路径自行查看,如果在本地文件中找出了这个网址对应的ip地址,直接返回结果,如果没有找出,就会联网查询公开的DNS服务器,在这个服务器中再次查询是否存在这个网址对应ip地址,查找出来就返回结果,浏览器自动渲染出对应的html页面,没有查询到就返回404。所以我们也可以通过这个方法在host文件中配置主机名映射快速访问网站。
7、谈谈session与cookie的理解
cookie数据存放在客户端,为多个用户浏览器共享,不安全,而session数据存放在服务器中,为一个用户浏览器独享,相对安全。考虑到性能问题,一般会把用户名密码之类的数据存于session中,其它不重要的存放于cookie中。
值得注意的是:session是依赖于cookie的,但是禁止cookie后,依旧可以使用session,这需要通过其它方式来获取这个session_id,比如,在url后面,或者以表单的形式提交到服务器端。
8、对软件测试的理解
作为研发与客户的中间人,测试的本质就是替客户为这款软件把关,以最高最好的质量交付到客户手中,防止软件质量的原因导致用户的体验不好,从而避免被卸载的命运。
9、innodb引擎与myisam引擎的区别
①事务:innodb支持事务,myisam不支持
②外键:innodb支持外键,myisam不支持
③锁机制:innodb默认行锁,myisam只支持表锁
④读写性能:innodb增删改性能更优,myisam查询性能更优
⑤存储结构:innodb在磁盘存储为两个文件(表结构、数据),myisam为三个文件(表结构、数据、索引)
总结:innodb是mysql5.5之后的默认引擎,它是具有事务、回滚和崩溃修复能力的事务安全型引擎;而myisam是具有全文索引和较高查询性能的非事务性引擎。
特点:
innodb存储引擎的特点是支持事务的存储引擎,适合于插入和更新操作比较多的应用,适合大数据,大并发。
myisam存储引擎的特点是非事务的存储引擎,适合用于频繁查询的应用。适合小数据,小并发。
10、Linux系统与Windows系统有何区别
①性价比:Linux服务器开源免费,Windows收费
②性能:Linux服务器性能远比Windows高,它的占用资源少
③安全性:Windows用户体量大,容易遭受黑客攻击,安全漏洞多;而Linux的漏洞由全球开发者共同修补,安全性高
④稳定性:Linux是多用户进程系统,可以一次性处理大量运行的进程,Windows系统占用资源多,Linux处理进程数量远比Windows要多
⑤易用性:Windows是图形化界面,普通用户可以马上上手;Linux是命令行界面,有一定的门槛
⑥娱乐性:Windows软件支持丰富,Linux软件支持少
⑦内核:Linux使用Linux内核,Windows使用NT内核
11、黑盒测试和白盒测试的区别
①测试目的和侧重点:黑盒测试只根据需求说明书验证功能是否符合需求;白盒测试侧重于检验代码的质量或执行路径覆盖率。
②测试层次:黑盒测试侧重于系统层次的测试;白盒测试侧重于代码层次的测试。
③测试方法和工具:黑盒测试主要采用手动测试方法和自动化测试工具(如Selenium);白盒测试则使用专业工具(如Code coverage analysis)。
④知识背景和能力要求:黑盒测试不需要过多的编程经验,只需要对软件需求有一定的了解并能够设计出有效的测试用例即可;白盒测试需要一定的编程经验,能够理解源代码并对其修改和优化。
12、请解释一下缺陷瀑布模型和敏捷开发过程之间的区别和联系。
区别:
① 开发方式不同:缺陷瀑布模型采用顺序式开发,即从需求分析、设计、编码、测试到交付都是按照固定的顺序进行;而敏捷开发过程则采用迭代式开发,即将需求分散到多个迭代中完成,每个迭代包含需求分析、设计、编码、测试等工作。
② 强调重点不同:缺陷瀑布模型强调项目计划和文档,注重需求分析和设计阶段的文档制作;而敏捷开发过程强调反应灵活、快速响应变化,注重可执行代码及其演示。
③ 适用场景不同:缺陷瀑布模型通常适用于对需求稳定且有明确目标的项目;而敏捷开发过程适用于需求变化频繁或者要求快速交付的项目。
联系:
① 两者都是软件开发方法,都旨在提高软件质量和效率,并满足用户需求。
② 两者都基于团队协作的理念,在整个开发流程中,都需要不同角色的人员密切协作。
③ 都注重质量管理,强调测试和验证环节。在缺陷瀑布模型中,测试通常在开发阶段结束后进行;而在敏捷开发过程中,则是通过持续集成和自动化测试来实现快速反馈。
总的来说,缺陷瀑布模型和敏捷开发过程各有优劣,在不同情况下选择合适的方法可以提高软件开发的质量和效率。

浙公网安备 33010602011771号