大疆测试开发笔试2021.8.14

1、两数交换

m,n=4,5
print(m,n)
n,m=m,n
print(m,n)
结果:
4 5
5 4

2、python的赋值

Python 的赋值更改的是变量的指向关系
python中,一切数据皆为”对象“。

m,n=10,3
p = m
m += p 
print(p)
结果:10
原因:对象不可被覆盖(销毁)
s=[1,2,3,4,5]
c = s
s[2] = 9
print(c)
结果:[1,2,9,4,5]
原因:因为列表是一个可变对象,可以修改可变对象的值。
注意:是修改,而不是覆盖,所以它可以原对象进行操作,而不是令 s 指向修改后的对象

参考:https://blog.csdn.net/zisefeizhu/article/details/82942260

3、global的用法

global x
def fun1():
    x='1'
def fun2():
    print(x)
fun1()
fun2()

结果:报错
Traceback (most recent call last):
  File "script.py", line 39, in 
    fun2()
  File "script.py", line 36, in fun2
    print(x)
NameError: name 'x' is not defined

解析:fun1()里面的变量x为局部变量,只在fun1()内有作用。fun2()中,使用变量 x 之前并没有变量 x,即没有定义变量x,故而报错。

global的知识点
基本格式:****global 变量名1,变量名2,...
作用: 声明变量的作用域。即提示python 解释器,表明被其修饰的变量是全局变量。
原因:
(1)在 c/c++ 等中,变量一定是先声明,后使用。所以可以知道现在使用的变量是全局还是局部变量
(2)在python中,变量不需要先声明,直接使用即可。故而怎么知道用的是局部变量还是全局变量?
首先:python使用的变量,在默认情况下一定是用局部变量
其次:python如果想使用作用域之外的全局变量,则需要加global前缀
注意不能在用 global 声明变量的同时给变量赋值
def fun1():
global x='1' # 报错
def fun2():
print(x)
fun1()
fun2()
报错 !!!

x = 5
def fun1():
    global x # 此处声明,告诉执行引擎:我要使用全局变量x,不要整成局部的了!
    x='1'
def fun2():
    print(x)
fun1()
fun2() 
结果:
1
def fun1():
    global x
    x='1'
def fun2():
    print(x)
    
fun1()
fun2() 
结果:
1

解析:使用global 声明变量 x ,直接到global的作用域内寻找变量,未找到变量 x ,即提升x 为全局变量,所以在函数外也能访问。
python是动态调用变量。

x = [1,2]
def fun1():
    global x
    x='1'
def fun2():
    print(x)
fun1()
fun2()
结果:
1
解析:将全局变量x重新指向对象 '1'
x = [1,2]
def fun1():
    x[1] = 3
def fun2():
    print(x)
    
fun1()
fun2()
结果:
[1, 3]
解析:全局变量 x 为列表,是可变对象,fun1()里面的操作是修改可变对象的值。
x = [1,2]
def fun1():
    x='1'
def fun2():
    print(x)
    
fun1()
fun2()
结果:
[1,2]

解析:fun1()里面的变量 x 为局部变量。虽然全局变量 x 为列表,是可变对象,但是fun1()里面的操作并不是修改可变对象的值,而是试图覆盖可变对象,是不可能的,故而将 x 重新作为局部变量。

4、循环

# 去除字符串的特殊字符
s = 'qw$^e&sASd1*23('
for i in s:	# S为不可变类型,固定
    if not i.isalnum():
        s=s.replace(i,'')
print(s)
结果:
qwesASd123
s =[1,2,3,4,5]
for i in s:	# 可变类型
    s.remove(i)
print(s)
结果:[2,4]

解析:在删除列表元素的时候,解释器内有一个隐式的指针,指向下一个要删除的元素的位置(也就是索引?)
当准备要删除的时候,指向第一个元素1,然后把这个1删掉,同时指针指向第二个数组元素。但这时候元素1已经被删除了,元素2是第一个元素,第二个元素是3,这时候3被删除了。

5、内置函数

class A(object):
    pass
class B(A):
    pass
b=B()
print(isinstance(b,A)==True)
print(isinstance(b,object)==True)
print(isinstance(B,object)==True)
print(issubclass(B,A)==True)
print(issubclass(B,B)==True)	# 自己也是自己的子类
print(issubclass(A,B)==True)	# False
print(issubclass(b,B)==True)	# 描述错误
结果:
True
True
True
True
True
False
Traceback (most recent call last):
  File "script.py", line 9, in 
    print(issubclass(b,B)==True)
TypeError: issubclass() arg 1 must be a class

isinstance() 函数
作用:判断一个对象是否是一个已知的类型类似 type()
语法:isinstance(object, classinfo)
参数:
object:实例对象
classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组
返回值:如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False
isinstance() 与 type() 区别:
(1)type() 不会认为子类是一种父类类型,不考虑继承关系
(2)isinstance() 会认为子类是一种父类类型,考虑继承关系
如果要判断两个类型是否相同推荐使用 isinstance()

参考https://www.runoob.com/python/python-func-isinstance.html
在这里插入图片描述

issubclass()函数
作用:判断参数 class 是否是类型参数 classinfo 的子类
语法:issubclass(class, classinfo)
参数
class:
classinfo:
返回值:如果 class 是 classinfo 的子类返回 True,否则返回False
在这里插入图片描述

6、sizeof()——对齐

struct A{
    int a;
    char b;
    double *c;
};

32bit系统中sizeof(A)的大小是多少?
答案:4+(1+3)+4=12
解析:指针所占的字节数都是机器的位数。
32位的机器占32/8=4字节
64位的机器占64/8=8字节
参考:https://blog.csdn.net/sinat_34886122/article/details/106794547

7、正则表达式

“(?<!Spark|Mavic|Phantom)DJI” 能匹配?
答案:DJI
解析:能匹配除了DJI前面不是Spark或Mavic或Phantom的DJI字符串。

8、移位

a=2>>1+1	# 等价于 a=2>>(1+1)
print(a)

结果:0

解析:+、-运算符的优先级高于<< >>位移运算符
1+1=2
2>>2=0(相当于2/2 = 1,1/2=0。右移n位,相当于除以n次2)

9、Linux命令

查找包含特定字符串的文件一般用 grep 命令

10、线性电源

11、稳压二极管工作在什么状态

答案:反向击穿

12、LabVIEW中VI什么部分是常驻内存

13、正弦波信号发生器的技术指标

14、LabVIEW进行VI间进行数据传输的接口

15、c++ lambda

#include <iostream>
using namespace std;

int main() {	
	int a=1;
	auto I=[&](){return ++a;};
	I();
	cout<<a;
	return 0;
}
结果:2

16、什么是进程守护

17、TCP和UDP的区别

18、面向对象与面向过程基本概念及优缺点

19、摄影时,对曝光效果没有影响的是

焦距。
光圈,快门,感光度被称为曝光三要素。

测试的要求是找到全部的软件缺陷?

质量是开发出来的,不是测试出来的?

20、template方法

template<typename T>
T calc(T t,int){
    return t;
}
template<typename T>
T fcn(T t,T){
    return t;
}
int main() { 
   
    double d=3.2;
    float f=2.2;
    char c='3';
    fcn(c,'c');
    calc(d,f);
    fcn(d,f);   // 错误。不合法
    calc(c,'c');
	return 0;
}
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值