暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

dcs面试宝典

山卡la 2022-04-27
525


一、linux

查看进程、杀进程

    ps aux   # 查看所有进程
    ps -ef|grep 服务名 # 查看指定的服务进程


    top # 以全屏交互式的界面显示进程,三秒刷新一次
    top -d 4 # 间隔4秒刷新一次


    pstree -aup # 以树状图的方式展现进程之间的派生关系


    kill -9 PID # 以PID杀进程
    killall 进程名    # 以进程名杀进程, -l: 忽略大小写不同


    查看端口使用情况(指定的、所有的)

      netstat -nultp   # 显示tcp、udp的端口和进程等相关情况
      netstat -ntlp # 显示所有tcp端口的使用情况
      netstat -nultp | grep 端口号\服务名 # 查看指定端口\服务的端口使用情况


      lsof -i:端口号  # 查看端口的占用情况


      查看内存、cpu、磁盘

        cap proc/meminfo   # 查看内存信息
        cap proc/cpuinfo # 查看cpu信息


        free # 查看内存使用情况


        top # 实时查看cpu
        top -d 4 # 间隔4秒刷新一次


        df # 查看磁盘
        df -h # 带单位查询


        du -h --max-depth=1 # 查看当前目录下各个子目录所有使用的空间


        查看日志(实时、指定时间、关键字、报错信息前多少行、后多少行、统计一共出现了多少次)

          seq 20 > nginx.log    # 准备20行nginx.log文件


          tail -10 nginx.log # 查看nginx日志最后10行,不加 -10 默认显示最后10行
          tail -f 10 nginx.log # 实时查看最新追加的内容


          sed -n '/2022-04-01 14:12:39/,/2022-04-09 15:23:43/p' nginx.log


          cat nginx.log | grep '系统测试' # 关键字查找所在整行
          cat nginx.log | grep '系统测试' -A 10 # -A 后10行 -B 前10行 -C 前后10行
          cat -n nginx.log | grep '系统测试' # 显示行号
          cat nginx.log | tail -n +1000 | head -n 500 # 查看日志,从1000行开始,显示500行
          cat nginx.log | head -n 1400 | tail -n +1350 # 查看日志,显示1350行到1400行
          cat nginx.log | grep ''|grep '系统测试' | wc -l # 关键查看统计次数


          # 其他
          cat:由第一行开始显示文件内容
          tac:从最后一行开始显示,不知道你是否观察出来,tac是cat倒着写的,所以功能上两个是相反的
          nl:显示的时候,同时输出行号
          more:一页一页地显示文件内容
          less:与more类似,相比于more,可以往前翻页
          head:只看前面几行
          tail:只看后面几行


          vi命令(模式、末行命令)        

          命令模式====》通过输入命令可以进入到编辑模式

          1. a命令:从命令模式进入到编辑模式,在光标所在位置后进行输入

          2. A命令:从命令模式进入到编辑模式,在光标所在行尾进行输入

          3. i命令:从命令模式进入到编辑模式,在光标所在位置前进行输入

          4. I命令:从命令模式进入到编辑模式,在光标所在行首进行输入

          5. o命令:从命令模式进入到编辑模式,在光标所在行下一行输入

          6. O命令:从命令模式进入到编辑模式,在光标所在行上一行输

          7、p命令:粘贴到光标所在的下一行

          8、P命令:粘贴到光标所在的上一行

          9、yy命令:复制光标所在的行内容====》结合p/P命令使用

          10、2yy命令:复制光标所在行开始往下2行内容====》结合p/P命令使用 11、x命令:删除光标所在的字符

          12、X命令:删除光标所在的前一个字符

          13、dd命令:删除光标所在行的内容

          14、D命令:删除所在行光标开始到行结束所有的内容

          末行命令:关键字查询、查看行号、替换、删除

          1、w:保存

          2、wq:保存并退出

          3、wq!:强制保存并退出

          4、q!:强制退出  

          5、set nu:在编辑模式下显示文件的行号

          6、set nonu:取消行号

          7、/关键字:在编辑模式下查找所有的关键字且高亮显示

              ①、通过vi+文件:不会将所有的关键字高亮显示、可以通过按n键选取下一个 

              ②、通过vim+文件:将所有的关键字高亮显示

          8、noh:取消关键字高亮显示

          9、在编辑模式内将file1文件中的1-3行内容写入到新的文件中(新文件可以不存在)

               在末行命令模式输入:1,3w dcs100

               dcs100:代表将内容写入到dcs100文件中且保存在/目录下

          cat、less、more区别

          ①、cat是一次性查看文件的所有内容

          ②、less一般是查看文件内容较多的时候,且支持分页查看文件

          ③、less查看文件最后的内容会显示end

          ④、less查看文件结束后需要手动退出到命令行(ctrl+z)

          ⑤、more一般是查看文件更多的时候,且支持分页和百分比显示查看文件

          ⑥、more查看文件结束后自动退出到命令 more>less>cat


          如何配置ip地址、修改临时ip地址

            # 修改临时ip地址
            ifconfig eth0 IP地址 netmask 255.255.255.0


            # 配置静态ip地址
            DOOTPROTO=static # dhcp动态修改为static静态
            IPADDR=IP地址
            NETMASK=子网掩码
            GATEWAY=网关


            # 修改后重启网卡


            如何查询指定文件或者目录的权限

              ls -l [文件\目录]    # 查看指定文件或目录权限


              何修改文件或者目录的权限、指定添加执行的权限

                chmod 777 [文件\目录]    # 修改文件、目录权限
                chmod [a\u\g\o][+\-][r\w\x] # a:所有用户、u:创建者、g:创建者同组用户、o:其他用户;+:增加权限、-:取消权限;r:读、w:写、x:执行


                两个服务器的文件传输

                  # 两台都需要装有openssh-clients
                  scp [资源] root@[IP地址]:/mnt/


                  将一个命令的结果写入到一个文件中

                    find  -name nginx > text.txt    # 命令结果覆盖写入text.txt中; >:覆盖、>>:追加


                    find命令(类型、名字、时间、大小)

                      find [目录] -[name\size\type\amin\cmin\mmin\atime\ctime\mtime] [条件]
                      find -name nginx # :从 中开始查找名为nginx的文件和目录
                      find -name n* # n*: 模糊匹配,查找开头为n的所有文件和目录


                      find -type d # d: 查找出类型为目录的所有目录、f:查找文件


                      find -size 1000c # 查找1000字节的文件
                      find -size +1000c # +:查找大于1000字节的文件、-:查找小于1000字节的文件


                      find / -amin n    # amin:查找最后n分钟、cmin:最后n分钟改变状态、atime:最后n天、ctime:最后n天改变状态、mtime:系统中最后n*24小时被改变文件数据的文件


                      移动或者重命名文件

                        mv test.txt text.txt    # test重命名text
                        mv test.txt # test移动至 目录


                        打包、解压(tar包、zip包、tar.gz包...)

                          zip -r test.zip file1    # 打包带有目录的文件需要加—r
                          unzip test.zip # 解压
                          tar -cvf myfile.tar.gz tmp/file etc/ssh # "c" 压缩,将/tmp/file etc/ssh 压缩为myfile.tar.gz
                          tar -xvf myfile.tar.gz # "x" 解压到当前
                          tar -xvf myfile.tar.gz -C tmp/www # "x" 解压 "C" 指定解压到/tmp/www/目录


                          覆盖追加

                            cat file1 > file1    # >: 覆盖、>>: 追加
                            sed -n '5,10p' file1 > file2 # 将文件1的指定内容追加到文件2中




                            *二、H模型(研发流程/测试流程/项目组的工作流程)

                            1. 需求评审:你提过哪些问题

                              a、例如在登录模块用户名输入那一块需求写着提示请输入用户名,我提的问         题是输入用户名这块是否是支持用户名和手机号两种形式

                              b、还有在后台商品管理模块的商品列表查询是否支持模糊匹配查询

                            2. 用例评审:你提过哪些问题、别人给你提过哪些问题


                            3. 测试报告:有哪些内容、什么时候写、怎么写(文档、工具)

                              a、测试的功能、范围

                              b、测试环境、测试时间、测试人员

                              c、测试阶段:冒烟测试、sit测试、回归测试

                              d、执行的用例数(全量)、每个测试阶段执行的用例数

                              e、bug统计:bug总数、L1、L2、L3、L4bug数量及占比

                              f、完成的功能、修复的bug数、遗留的bug数

                              g、每个阶段的bug数

                              h、风险上报(遗留的bug、偶先的bug、未完成的功能)

                              i、交付的文档、测试结论

                              j、在企业中,报告一般以邮件的形式发送给领导且抄送组内成员

                              k、在企业中有些测试报告可以通过工具生成

                              测试报告在功能测试通过之后写


                            4. 测试计划:计划包含哪些内容、写过作为初稿

                              1. 简介(目的、背景、范围)

                              2. 约束(准入、准出)

                              3. 资源与环境(人力资源配置、测试环境配置)

                              4. 测试任务与进度

                              5. 风险及风险管理(对有可能因为测试不到位的地方打预防针)

                              6. 测试交付文档(思维导图、用例、报告、方案)

                              7. 测试的阶段(冒烟测试阶段、SIT测试阶段(SIT1、SIT2....)、回归测试阶段)

                            5. 风险把控:遇到过哪些风险、如何解决的、如何避免这些风险


                            6. 开发压缩测试时间(测试时间不足):如何处理

                              首先确定需求的优先级(优先测试需求级别高的)可以3直接编写测试点、省略编写测试用例(后续添加)及会议形式的用例评审(可以通过邮件的形式)

                                 借人力、加班、SIT测试阶段轮数可以相应的减少

                                 及时将风险进行上报

                            1. 上线时候出现bug你是如何处理的


                            2. 给你一个项目或者需求如何开展工作(备注:给你一个需求你是如何进行测试的)


                            3. 如何快速融入/了解一个新的项目


                            4. 上线的标准是什么(测试准入准出)


                            5. 在测试过程加需求你会如何处理


                            6. 在项目中有没有遇到过经常修改需求、你是怎么处理的?


                            7. 多久一个版本(平均一个月、半个月、紧急版本)、项目组成员(测试开发比例:1:4)



                            三、用例编写  

                            1. 编写用例用到了哪些方法、结合项目举个例子

                            2. 你负责的模块怎么测的(讲解测试点)

                            3. 如何划分用例的等级、有哪些级别

                            4. 如何保证/提高用例的覆盖率

                            5. 用例包含哪些内容/用例有几大要素

                            6. 如何评判一条用例是高质量用例/如何编写高质量用例

                            7. 你写过多少条用例(备注:讲最近一个版本写过多条用例)

                            8. 一天执行多少用例(80条)

                            9. 购物车、百度、搜索、发朋友圈、红包、点赞、转账、游戏

                            10. cd这个命令如何测试、测函数

                            11. 界面测试、功能测试、弱网测试、性能测试、兼容型测试、安全测试



                            四、bug相关

                            1. bug的流程

                            2. 一条bug包含哪些内容

                            3. bug的级别有哪些、能否举例说明下

                            4. 如何提一个条高质量的bug  

                            5. 你提了一个bug开发不认可如何处理

                            6. 你是如何定位bug的:查看服务器日志、抓接口、经验分析、查看数据库、业务逻辑判断  

                            7. 如何判断一个bug是前端的还是后端的

                            8. 你找到过多少个bug(最近的版本找了多少个bug、记得要合理)

                            9. 偶现的bug如何处理

                            10. 你印象最深刻的bug是哪一个(备注:关于业务逻辑的bug、bug的原因、bug解决方案 )


                            五、搭建环境

                            1. 搭建环境流程

                              安装项目所需的环境,部署项目包

                            2. tomcat默认端口号 、mysql默认端口号、nginx默认端口号

                              tomcat:8080      mysql:3306     nginx:80

                            3. 如何修改tomcat端口号

                              conf > server.xml > 修改Connector中port=8080的端口

                            4. tomcat里面的目录  

                              bin:执行程序目录

                              conf:配置文件目录

                              webapps:项目包部署目录

                              lib:

                              logs:日志存放目录

                              temp:

                              work:

                            5. tomcat和nginx、apache区别

                              apache 静态解析、不支持动态页面

                              tomcat 只用做java服务器,处理动态请求

                              nginx 负载均衡、反向代理、处理静态请求,处理速度高于apache

                              apache和nginx相比,nginx适合做前端服务器,适合做负载均衡


                            六、项目

                            1. 项目介绍

                            2. 项目模块

                            3. 负责的模块

                            4. 负责模块的测试点

                            5. 项目做了多少年



                            七、mysql数据库

                            1. 常见的数据类型

                              char、varchar、int、date、bigint、

                            2. 常用的一些聚合函数(拼接多个字段:concat())

                              sum():求和     avg():平均值 max():最大值 min():最小值 count():统计记录数

                            3. 修改和插入的语句

                              insert into 表名 values()

                              update 表名 set 字段=值 where 条件

                            4. 单表查询的语法:分组、排序、模糊查询、limit、、between...and...

                              select * from student group by sex;

                              select * from student order by id asc;

                              select * from student where name like '张';

                              select * from student where limit 1,5

                              select * from student where id between 3 and 8;

                            5. 多表连接:基本连接、内连接、左边连接、右连接、硬连接

                              基本连接:select * from student s, class c where s.id=c.sid;

                              内连接:select * from student s inner join class c on s.id=bb.sid;

                              左连接:select * from student s left join class c on s.id=c.sid;

                              右连接:select * from student s right join class c on s.id=c.sid;

                              硬连接:select * from student s union select * from class c;

                            6. 左连接、右连接、内连接区别

                              左连接:左表为主表,右表为从表;优先显示主表;主表内容全部有,从表内没有的显示Null

                              右连接:右表为主表,左表为从表;优先显示主表;主表内容全部有,从表内没有的显示Null

                              内连接:显示两个表中相关联字段的记录

                            7. char和varchar的区别  

                              区别:

                               char字段的最大长度为255字符,varchar字段的最大长度为65535个字节;

                               char类型在空间使用上会有浪费,而varchar类型在空间使用上比较节省;

                               char类型的查找效率高,varchar类型的查找效率比较低。

                            8. 备份表、表数据

                              create table 原表 like 新表

                              INSERT into 新表 like select * from 原表

                            9. 三表怎么连接

                              select * from a left join b on a.id=b.id left join c on a.id=c.id

                            10. 索引和视图、数据库引擎

                              sql优化就是优化索引,什么是索引?

                               索引想相当于书的目录

                               索引的数据结构是B+树

                              索引的优势

                               提高查询效率(降低IO使用率)

                               降低CPU使用率

                              索引的弊端

                               索引本身很大,可以存放在内存或硬盘上,通常存储在硬盘上

                               索引不是所有情况都使用,比如(少量数据、频繁变化的字段、很少使用的字段)

                               索引会降低增删改的效率

                              视图相当于一张虚拟的表,不会存储在数据库中,以动态的形式生成

                              数据库引擎:innodb,myisam

                            11. 还有了解过其他的数据库?

                              关系型数据库

                               SQL Server

                               Oracle

                               SQLLite(嵌入式,占用资源低)

                               MariaDB

                               PostgreSQL

                              非关系型数据库

                               redis(键值对模型)

                               MongoDB(文档模型)

                               hbase(列模型)

                            12. 查询所有科目都及格的学生姓名

                              select sname from score_table where sname not in(select sname from score_table where score < 60 group by sname)


                            13. 查询A表中不在B表中的名字

                              select name from A  where name not in(select name from B)




                            八、开放性问题

                            1. 可以接收加班/谈谈你对加班的看法?

                            2. 职业规划/近几年的规划

                            3. 为什么离职、离职的原因

                            4. 你有什么想问我的

                            5. 你在公司是如何与同事进行相处  

                            6. 你觉得你在项目所处的角色是什么

                            7. 你觉得你在项目组最有成就感的一件事是什么

                            8. 你觉得你个人优势是什么

                            9. 你觉得你有哪些缺点

                            10. 你手上有没有offer

                            九、python面试题

                            1. 常见的数据类型

                              str、int、bool、tuple、list、dict、set

                            2. python2和python3的区别

                              python3 去除了long类型,只有一种整形-int

                              新增了bytes类型

                              输出:print 改成了函数

                              输入:raw_input() 改成input()

                              range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型,所以打印的时候不会打印列表

                            3. 列表和元组的区别

                              列表可变,元组不可变

                              列表元素可重复,元组元素不可重复

                            4. 有序序列、无序序列有哪些

                              有序列表:list(可变对象)、tuple(不可变对象)、str(不可变对象)

                              无序序列:dict、set、控制集合数据的对象

                            5. 可变对象、不可变对象

                              当对象的值发生变化,但内存地址没有改变时,则说明是可变类型

                              当对象的值发生变化,内存地址也发生改变时,则说明是不可变类型

                              可变对象有:列表、字典、集合

                              不可变对象有:元组、字符串、数值

                            6. 深浅拷贝

                              ①、copy.copy():浅拷贝        浅拷贝只能拷贝最外面的一层不可变对象、里面的一层可变对象引用的还是同一个内存地址 ②、copy.deepcopy(): 深拷贝            深拷贝相当于把所有的值拷贝过来后存储到一个新的内存地址,相互之间不受影响

                            7. 九九乘法表

                              for i in range(1, 10):

                              for j in range(1, i+1):

                              print(‘{} * {} = {}’.format(j, i, j*i), end=‘ ’)

                              print()

                            8. 冒泡排序

                              num_list = [2,3,54,6,3,5,1,4]

                              for i in range(0, len(num_list) - 1):

                              for j in range(j, len(num_list) - i -1):

                              if num_lsit[j] > num_list[j+1]:

                              num_list[j], num_list[j+1] = num_list[j+1], num_list[j]

                              print(num_list)

                            9. 字典中键必须是什么类型

                              必须是不可变类型

                              使用 dir() 函数查看方法,要有 __hash__ 方法

                            10. 常用的第三方模块  

                              selenium、requests、pymysql、xlrd、pyYMAL、ddt、

                            11. 给你一个列表如何取最后两个元素的值

                              num_list = [23,45,65,7,34,6,8]

                              print(num_list[-2:])

                            12. 给你一个列表如何进行排序、根据元素的长度如何进行排序

                              sorted()函数:针对于所有的可迭代对象进行排序


                              使用列表对象中的sort函数 key参数为len reverse为False 来升序

                              str_list = [‘sdfsdf’, ’ssddfgfgdfsdf‘,  ‘sdffdgfdg’]

                              str_list.sort(key=len, reverse=False)

                            13. is和==的区别

                              is:判断内存地址

                              ==:判断值

                            14. sort和sorted区别

                              ①、sort只能对列表进行排序②、sort没有返回值、是在原列表的基础上进行排序③、sorted可以对所有的可迭代对象进行排序  ④、sorted有返回值,排序后会返回一个新的列表⑤、sort和sorted既可以升序、也可以降序(备注:reverse=False(升序)、reverse=True(降序))

                            15. 如何获取字典中键和值

                              获取键:dist1.keys()

                              获取值:dist1[‘key’]

                            16. append和extend区别

                              append():方法向列表的尾部添加一个新的元素。只接受一个参数

                              extend():方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。也是只接受一个参数

                            17. 字符串、列表、字典常用的方法

                              字符串:split、lstrip、rstrip、strip、replace、count、join、find

                              列表:append、pop、sort、extend、remove、count、index、insert、reverse、copy

                              字典:keys、get、pop、values、items、fromkeys、copy

                            18. 去除ab字串、查询指定目录下的所有文件包括子目录

                              content = ‘aabbsdfskdjfab’

                              while ‘ab’ in content:

                              content = content.replace(‘ab’, ‘’)

                              print(content)

                            19. os模块:如何获取当前执行模块的路径、上级路径

                              os.path.dirname(__file__)

                              os.path.dirname(os.path.dirname(__file__))

                            20. 迭代器和生成器的区别

                              可迭代对象包含迭代器。

                              如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。

                              定义可迭代对象,必须实现__iter__方法;定义迭代器,必须实现__iter__和next方法。

                            21. 类的三大特性

                              封装、继承、多态

                            22. 类方法、实例方法、静态方法的区别

                              ①、定义类方法需要添加装饰器classmethod

                              ②、定义实例方法不需要添加任何装饰器

                              ③、定义静态方法需要添加装饰器staticmethod

                              ④、类方法自带一个形参cls

                              ⑤、实例方法自带一个形参self

                              ⑥、静态方法不带任何参数,相当于类里面的一个普通函数

                              ⑦、类方法中可以用用类变量、调用类方法

                              ⑧、实例方法中可以应用类变量、实例变量,调用类方法,实例方法

                              ⑨、静态方法中既不可以应引用实例、类变量,也不可以调用实例、类方法

                            23. self代表的是什么、object代表的是什么

                              self:类的实例,非类

                              object:基类、父类、超类

                            24. 有用过装饰器?用过哪些、装饰器的原理是什么、装饰器的作用是什么

                              类方法装饰器:classmethod,静态方法装饰器:staticmethod,

                            25. python怎么连接数据库

                              导入pymsql库

                              使用pymsql的Connection类进行连接,连接需传入参数:host主机地址、user数据库用户名、password数据库密码、database库名、port数据库端口号(默认3306)

                            26. 手撕代码



                            十、UI自动化

                            1. 常见元素定位方法


                            2. xpath中的单斜杠和双斜杠代表的是什么意思


                            3. selenium的优缺点、原理、使用的是什么协议


                            4. selenium2和selenium3的区别


                            5. 什么样的项目适合做自动化、不适合做自动化


                            6. 谈谈你对自动化的理解


                            7. 什么时候开展自动化工作、什么时候编写自动化用例


                            8. 自动化用例的占比


                            9. 写了多少条自动化用例、执行一次花费多久时间(403条用例、15-20分钟)


                            10. 找不到元素有哪些原因、如何处理的


                            11. 如何提高脚本运行的效率


                            12. 如何提高脚本运行的稳定性


                            13. 平常是如何去维护脚本的


                            14. 自动化运行的策略(回归测试、定时任务、集成)


                            15. 你在自动化过程中遇到过哪些问题(难点)、你是怎么处理的


                            16. selenium中的三种等待方式


                            17. 如何判断元素是否是唯一的


                            18. UI自动化是怎么做的:怎么定位、页面操作、框架、po分层  


                            19. 动态的元素如何进行定位


                            20. 隐藏的元素如何进行定位


                            21. 如何保证你的脚本兼容所有的浏览器


                            22. 做自动化的时候数据是怎么处理


                            23. unittest框架中的四个方法区别、执行用例的规则+顺序


                            24. 还有了解过其他的框架?unittest和pytest区别




                            十一、接口理论知识

                            1、什么是接口:

                            统称api,程序与程序之间的对接、交接。接口测试主要时为了检验不同组件之间的数据的传递是否正确,同时接口测试还要测与第三方系统的对接

                            2、为什么要做接口测试?
                            ①、测试左移思想,越早进入测试,发现bug修复的成本越低
                            ②、当界面功能没出来时,做接口测试一是节省时间,二是测试一些前端功能测不到的场景
                            ③、后端接口测好了,前端可以随意改变

                            3、怎么做接口测试?

                            测试接口是主要通过工具或者代码模块向http请求发送接收,来实现手工接口测试和自动化接口测试

                            在公司的实际情况:

                            前台开发和后台开始发是独立进行,一个项目是由前后台组成,最终我们要进行前后台联调,这时候我们就使用接口,那么在前后台联调前,我们需要对不同接口进行测试

                            4、什么时候测试接口?
                            ①、接口已经开发完成
                            ②、接口已经部署完成
                            ③、前端页面和后端接口都开发完成且进行部署(业务+接口)

                            前端:前台、后台

                            后端:数据库、接口、服务器

                            添加一个用户:

                            1、直接在页面添加
                            2、直接在数据库表中插入一条数据
                            3、调接口


                            5、接口测试流程:

                            ①、需求评审
                            ②、找开发拿到接口文档(如果没有接口文档,需要使用抓包工具进行抓包)
                            ③、编写用例、用例评审
                            ④、接口开发完成且进行部署
                            ⑤、冒烟、SIT、回归测试

                            6、接口常见的请求方法有哪些?
                            1. get 向特定资源发出的请求(请求指定页面信息,并返回实体)

                            2. post 向指定资源提交数据进行处理请求(表单)

                            3. put 向指定资源位置上传最新内容(从客户端向服务器传送的数据取代指定文档的内容

                            4. head 与服务器和get请求一致的响应,响应体不会返回,获取包含在消息头中的原信息

                            5. dalete 请求服务器删除所标示的资源


                            一、你使用最多请求有哪些?
                            答:get和post(测试使用最多)

                            7、get请求和post请求的区别?(面试常问)
                            1. get请求的参数是存放在Url地址栏中,post请求的参数是放在body表单中

                            2. get是可见的在Url地址栏中,post不可见所以post要比get更安全

                            3. get一般它是用来获取数据,post是提交数据

                            4. get产生一个tcp数据包,post是产生两个tcp数据包

                            5. get在参数数据类型中,是直接收ASCII字符,post是没有限制

                            6. get方式提交的数据大小是有限制的,因为是在url地址栏中入参,而post由于是在body中所以没有限制

                            7. get请求只能进行url编码,post支持多种编码方式

                            8. get请求会被浏览器主动缓存,post不会主动缓存需要自己手动设置

                            9. get在浏览器回退时是无害的,post会自动再次去提交请求(因为post每次调用时都会创建一个新的资源)

                            8、如何分析一个BUG是前端还是后端的?(面试常问)
                            1. 通过抓包工具或者F12先抓此接口

                            2. 对抓到的接口对着接口文档看请求报文有没问题,有问题肯定就是前端的数据问题(前端BUG)

                            3. 如果请求报文没问题,那就看返回报文(响应报文)返回的数据不对,那就是后端BUG


                            9、TCP、IP五层模型(强制记住)
                            1. 应用层:负责应用程序之间的沟通,网络编程主要是针对的就是应用层

                              应用层协议:

                              http超文本传输协议

                              Telnet远程登录协议

                              Ftp文件传输协议

                              DNS域名协议

                              smtp邮件协议

                              wals网络通讯协议

                            2. 传输层

                            3. 网络层

                            4. 数据链路层

                            5. 物理层





                            文章转载自山卡la,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论