获取字节长度_字节跳动在职大佬总结(中):这个面经太有用了吧!

ee23e5c27a565876a0784a04bf63ce8b.gif

TCP和UDP的区别、特点

TCP的主要特点是:

  • 面向连接。

  • 每一条TCP连接只能是点对点的(一对一)。

  • 提供可靠交付的服务(无差错,不丢失,不重复,且按序到达)(校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制)。

  • 提供全双工通信。

  • 面向字节流。

UDP的主要特点是:

  • 无连接。

  • 尽最大努力交付(不保证可靠交付)。

  • 面向报文。

  • 无拥塞控制。

  • 支持一对一、一对多、多对一和多对多的交互通信。

  • 首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大。
UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

Integer和int的区别

Integer是int的包装类,int则是java的一种基本数据类型。

Integer变量必须实例化后才能使用,而int变量不需要。

Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。

Integer的默认值是null,int的默认值是0。

判断一个类是否“无用”,则需同时满足三个条件:

  • 该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例。

  • 加载该类的ClassLoader已经被回收。

  • 该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

ARP协议

工作过程

aee9b4307925f05409c48081ffb6deab.png
  • 第一步:首先,每个主机都会有自己的ARP缓存区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

  • 第二步:当源主机要发送数据时,首先检测ARP列表中是否对应IP地址的目的主机的MAC地址
    如果有,则直接发送数据。如果没有,就向本网段的所有主机发送ARP数据包,内容:我是IP地址,mac地址,谁是IP地址,mac?

  • 第三步:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包。如果是,则首先从数据包中取出源主机的IP和mac地址写入到ARP列表中,如果已存在,则覆盖。然后将自己的mac地址写入arp响应包中,告诉源主机自己是它想要找的mac地址。

  • 第四步:源主机收到ARP响应包后,将目的主机的IP和mac地址写入arp列表,并利用此信息发送数据。

如果源主机一直没有收到arp响应数据包,表示arp查询失败。

为什么要使用ARP协议

OSI模型把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface)。IP地址工作在第三层,MAC地址工作在第二层。当协议在发送数据包时,需要先封装第三层IP地址,第二层MAC地址的报头,但协议只知道目的节点的IP地址,不知道目的节点的MAC地址,又不能跨第二、三层,所以得用ARP协议服务,来帮助获取到目的节点的MAC地址。

ARP协议是第几层协议

工作在二层,是三层协议。

ARP在生成环境产生的问题及解决办法:

  • ARP病毒,ARP欺骗。

  • 高可用服务器对之间切换时要考虑ARP缓存的问题。

  • 路由器等设备无缝迁移时要考虑ARP缓存的问题,例如:更换办公室的路由器。

关系型数据库与NOSQL

关系型数据库

Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL。

非关系型数据库 NOSQL(Not Only SQL)

NOSQL特点:

  • 易扩展,数据之间没有关系的。

  • 大数据量,高性能。高性能读写非常灵活的。

  • 灵活的数据模型。不需要事先对存储数据建立字段。

  • 高可用。

NOSQL主要主流产品:

Redis、CouchDB、mongoDB、Cassandra。NOSQL中比较火的三个数据库Redis、Memchache、MongoDb。

红黑树

结点是红色或黑色。

根结点始终是黑色。

叶子结点(NIL结点)都是黑色。

红色结点的两个直接子结点都是黑色(即从叶子到根的所有路径上不存在两个连续的红色结点)。

从任一结点到每个叶子的所有简单路径都包含相同数目的黑色结点。

MySQL中char、varchar和text三者的区别

在MySQL中,char、varchar和text类型的字段都可以用来存储字符类型的数据,char、varchar都可以指定最大的字符长度,但text不可以。

它们的存储方式和数据的检索方式也都不一样。
数据的检索效率是:char > varchar > text。

具体说明

  • char:存储定长数据很方便,CHAR字段上的索引效率极高,必须在括号里定义长度,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填充),且在检索的时候后面的空格会隐藏掉,所以检索出来的数据需要记得用trim之类的函数去过滤空格。

  • varchar:存储变长数据,但存储效率没有char高,必须在括号里定义长度,可以有默认值。保存数据的时候,不进行空格自动填充,而且如果数据存在空格时,当值保存和检索时尾部的空格仍会保留。另外,varchar类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。

  • text:存储可变长度的非Unicode数据,最大长度为2^16-1个字符。text列不能有默认值,存储或检索过程中,不存在大小写转换,后面如果指定长度,不会报错误,但是这个长度是不起作用的,意思就是你插入数据的时候,超过你指定的长度还是可以正常插入。

关于存储空间
在使用UTF8字符集的时候,MySQL手册上是这样描述的:

  • 基本拉丁字母、数字和标点符号使用一个字节。

  • 大多数的欧洲和中东手写字母适合两个字节序列:扩展的拉丁字母(包括发音符号、长音符号、重音符号、低音符号和其它音符)、西里尔字母、希腊语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和其它语言。

  • 韩语、中文和日本象形文字使用三个字节序列。

结论

  • 经常变化的字段用varchar

  • 知道固定长度的用char

  • 超过255字节的只能用varchar或者text

  • 能用varchar的地方不用text

  • 能够用数字类型的字段尽量选择数字类型而不用字符串类型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了

  • 同一张表出现多个大字段,能合并时尽量合并,不能合并时考虑分表

App测试和Web测试的区别

web和app的区别

  • web项目,一般都是b/s架构,基于浏览器的。

  • App则是C/S的,必须要有客户端。那么在系统测试测试的时候就会产生区别了。

首先从系统架构来看的话,Web测试只要更新了服务器端,客户端就会同步会更新。而且客户端是可以保证每一个用户的客户端完全一致的。但是App端是不能够保证完全一致的,除非用户更新客户端。如果是App下修改了服务端,意味着客户端用户所使用的核心版本都需要进行回归测试一遍。

性能方面

  • web页面可能只会关注响应时间。

  • App则还需要关心流量、电量、CPU、GPU、Memory这些了。

兼容方面

  • Web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。而浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)。

  • App的测试则必须依赖phone或者是pad,不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS,不过国内的Android的定制系统太多,也是比较容易出现问题的。

相比较web测试,app更是多了一些专项测试:

  • 一些异常场景的考虑以及弱网络测试。这里的异常场景就是中断,来电,短信,关机,重启等。

  • 而弱网测试是App测试中必须执行的一项测试。包含弱网和网络切换测试。需要测试弱网所造成的用户体验,重点要考虑回退和刷新是否会造成二次提交。需要测试丢包,延时的处理机制。避免用户的流失。

安装、卸载、更新:

  • web测试是基于浏览器的所以不必考虑这些。而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件,更新的强制更新与非强制更新、增量包更新、断点续传、弱网,卸载后删除App相关的文件等等。

界面操作

  • 现在app产品的用户都是使用的触摸屏手机,所以测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。

b64fb58b012d05bcfd76a8d59f0274e2.gif

a2800d524ef82627165b2cee7c0e1180.png

链接:https://www.nowcoder.com/discuss/374134?toCommentId

本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除

6797ccfda4fd0d206958f9e613e1d620.gif

9fc828f76183219e1c16fe5e2e455491.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值