测试开发功能笔试知识点梳理

===================================================小米秋招测试开发方向=========================================================

  1、视图

  在视图可以进行的操作:更新视图、查询视图、在视图上定义新的视图

  在视图上不能进行的操作:在视图创建新的表

  延伸

  视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

  • 1.视图是一个虚拟表,其内容由查询定义。
  • 2.视图中的数据是由一张或多张表中的数据组成的。
  • 3.如果你改动了基本表,如果你的视图来源于这个基本表,那视图给你呈现的结果也会随之发生变化。

(所以视图其实是在已有数据表格表单的基础上进行的映射,他可以再进行新的映射,但你不能在一个本身就是“影子”的结构上创建一个实体,所以可以创建视图但是不能创建表)

  • 创建视图
1 CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
2 AS
3 SELECT查询
4 [WITH READ ONLY CONSTRAINT]

语法解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

  • 视图操作:

  备注:以下操作,如果当前视图是单表的情况下,且不是只读的情况,这个时候基本表的数据也会修改、新增、删除。新增的时候要覆盖所有字段。

  修改: 

UPDATE afa_user_view SET user_name='视图' WHERE user_code='system'

  添加:

INSERT INTO afa_user_view VALUES('test','001') 

  删除: 

delete from afa_attach_filestore_view where id='cf446676ca0c4c49bd1a3f33a6b5f553';

  2、python列表

  list = ['a', 'b', 'c', 'd', 'e']
  print list[10:]

  分析:打印结果为空[],因为列表是一个长度可变不固定的单位,所以list[1000]都是有的,只是会是空(好傻啊,这个都想不起来)

  3、操作系统--进程

  进程堵塞的原因:进程sleep、等待解锁、等待IO

  分析:

  首先明确几个概念

  第一个,进程sleep--->因为很多服务进程都阻塞在系统调用上而让进程进入了SLEEP状态;

  第二个,等待解锁----->系统处于死锁状态在等待解除死锁,死锁状态产生原因就是进程的永久堵塞;

  第三个,等待IO-------->进程在运行过程中由于需要IO而从运行态进入堵塞态,IO结束后再次进入就绪状态;

  第四个,时间片切换--->由于CPU对该进程服务时间到,进程由运行状态转换为就绪状态

  操作系统文章:

  操作系统(三)—进程管理 - 噜噜呀的文章 - 知乎 https://zhuanlan.zhihu.com/p/88017448

  4、树

  一个包含n个节点的四叉树,每个节点都有四个指向孩子节点的指针,这4n个指针中有多少个空指针?

  解析:n个节点,每个节点下面都有四个指针,所以一共有4n个指针,但是这4n个指针并不是每一个都指向了结点(因为一共才有n个节点嘛),所以有一部分是空指针。空指针=所有指针-非空指针,非空指针就是指向结点的指针,一共有多少结点被指针指向,一共就有多少非空指针,n个节点里面除了根结点之外都有父结点,也就都有指向的指针,所以非空指针为N-1,所以空指针就是4n-(n-1)=3n+1

  5、语法小知识

  记下来、记下来:undefined == null,undefined 和 null 就是相等的!!!(就是这么规定的)

  isNaN():javascript 中的函数,isNaN() 函数用于检查其参数是否是非数字值。

      如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。

      isNaN() 函数可用于判断其参数是否是 NaN,该值表示一个非法的数字(比如被 0 除后得到的结果)。

      (所以,为什么isNaN("100")返回的会是false啊???‘100’难道不是字符串吗 !!!哭戚戚~想不明白了::>_<::)

  parseInt():JavaScript中的函数,parseInt() 函数可解析一个字符串,并返回一个整数。返回解析后的数字。

          parseInt(string, radix)
          
参数描述
string 必需。要被解析的字符串。
radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

        注释:只有字符串中的第一个数字会被返回。

        注释:开头和结尾的空格是允许的。

        提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。

parseInt("10");            //返回 10
parseInt("19",10);        //返回 19 (10+9)
parseInt("11",2);        //返回 3 (2+1)
parseInt("17",8);        //返回 15 (8+7)
parseInt("1f",16);        //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

说明:第一个10,默认按十进制解析,所以解析结果的10;第二个19,按照 10进制解析,1*10+9*1;第三个11,按照二进制解析,1*2+1*1;……最后010,因为默认所以可能按十进制解析为10,也可能因为string是0加数字开头认为是八禁止,解析为8;

  所以parseInt(“1a”)默认按照十进制解析,为什么==1???因为a不属于10进制?所以只解析第一个数也就是1? parseInt("20 40")解析结果为20,因为只解析第一个。

  instanceof(): Java中的关键字,instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。

        instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。

  

  6、数据库

  传统关系型数据库事务的基本特性包括:原子性、一致性、持久性、隔离性

原文地址:https://www.cnblogs.com/gujunjie-study-time/p/14976918.html