1、紫光展锐笔试——2021.7.20
1.1 代码类——python语言 (A):remove():删除数组中第一次出现的目标值
def remove_i(l,n):
for i in l:
if(i==n):
l.remove(i);
return l;
if __name__ == '__main__':
l=[1,2,3,3,3]
n=3
remove_i(l,n)
print(l)
结果:[1,2]
(B):两数组相加
a=[1,2,3]
b=[2,2,4]
print(a+b)
结果:[1,2,3,2,2,4]
(C):and 需要判断所有的条件 都为true 才会返回;or 的话判断到 有一个true 就返回。所以and在数字判断时返回最后一个,or返回第一个 。 优先级:not > and > or 0:false 非0:true
print(5 and 2 or 1)
结果:2
print(1 or 5 and 2)
结果:1
print(0 and -5)
结果:0
print('0' and '-sf5')
结果:-sf5
print(0.010 and '-sf5')
结果:-sf5
print(0.00 and '-sf5')
结果:0.00
(D):赋值=、浅拷贝copy.copy()、深拷贝copy.deepcopy()——copy库 python数据类型可分为基本数据类型 (包括整型、字符串、布尔及None等),和由基本数据类型作为最基本的元素所组成的像列表、元组、字典等 。 例1:在Python中 基本数据类型 的赋值、深浅拷贝没有任何意义,都是指向同一块内存地址,也不存在层次问题。
import copy
n1 = 'abc'
n2 = n1
n3 = copy.copy(n1)
n4 = copy.deepcopy(n1)
print(id(n1))
print(id(n2))
print(id(n3))
print(id(n4))
例2:在python中 列表、元组、字典等非基本数据类型对象 的赋值、深浅拷贝的区别 赋值:将变量的内存赋给另一个变量,让另一个变量指向那个内存地址。 浅拷贝:在内存中将第一层额外开辟空间进行存放。
n1 = {"k1": "abc", "k2": 123, "k3": ["abc", 123]}
print(id(n1))
n3 = copy.copy(n1)
print(id(n3))
print(id(n1['k3']))
print(id(n3['k3']))
深拷贝:在内存中将数据重新创建一份,不仅仅是第一层,第二层、第三层…都会重新创建。
n1 = {"k1": "abc", "k2": 123, "k3": ["abc", 123]}
print(id(n1))
n3 = copy.deepcopy(n1)
print(id(n1['k3']))
print(id(n3['k3']))
import copy
a=[1,2,3,4,['a','b']]
c=copy.copy(a)
a.append(5)
a[4].append('c')
print(a,", ",c)
结果:[1,2,3,4,['a','b','c'],5], [1,2,3,4,['a','b','c']]
参考: https://www.cnblogs.com/caoj/p/7868844.html https://blog.csdn.net/xl502689459/article/details/102582007
1.2 代码类——c语言 (A):地址问题
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
printf("%x",p2+5);
求 p1+5,p2+5?
结果(32位中):
1代表的是一个单位量
p1 + 5 = p1 + 5 * sizeof(unsigned char) = p1 + 5 * 1 = 0x801000 + 0x5 = 0x801005
p2 + 5 = p2 + 5 * sizeof(unsigned long) = p1 + 5 * 4 = 0x810000 + 20 = 0x810000 + 0x14=0x810014
解析:
p1指向字符型,一次移动一个字符型,1个字节;p1+5后移5个字节,16进制表示为5;
p2指向长整型,一次移动一个长整型,4个字节,p2+5后移20字节,16进制表示为14。
默认32位中:{ char每次移动1个字节;short移动2个字节 ;int , long ,float移动4个字节 ;double移动8个字节 }
补充: 一、整数而言: 1、10进制转化为十六进制(0x):整数除以16取余 ,直到商为0为止 ,然后从最后一个余数读到第一个 ; ) 2、十六进制转为10进制:按权展开、相加 即得。 十进制与二进制、八进制转换类似(将16变为2、8)。
二、小数而言: 1、小数的十进制转换成十六进制的方法: 十进制小数转十六进制小数,方法为乘十六取整 ,每次乘以相应之后基数后取结果的整数部分即可。需注意的是并非所有的十进制小数都能完全转化为十六进制小数,这时就需要取近似值 。 例: 0.9032D 转化成 16进制小数 0.9032 * 16=14.4512 取整数14 即E 0.4512 * 16=7.2192 取整数7 0.2192 * 16=3.5072 取整数3 0.5072 * 16=8.1152 取整数8 0.1152 * 16=1.8432 取整数1 所以这个数转换成16进制就是0.E7381H
通用:十进制小数转换为其他进制小数: 十进制小数转换为其他进制的方法与转换为十六进制的方法相同。 十进制小数 转 R进制小数,方法为乘R取整,每次乘以相应之后基数后取结果的整数部分即可。 需注意的是并非所有的十进制小数都能完全转化为R进制小数,这时就需要取近似值。
2、十六进制带小数转换成十进制 十六进制数和十进制数类似,以小数点为界,整数部分从低位到高位依次是0次方位、1次方位、...、n次方位;小数部分从高位到低位依次是-1次方位、-2次方位、...、-m次方位 ,都可用加权求和 的方式表示。 十六进制数转换成十进制数时,先用加权求和的方式表示出来,再将十六进制数中的基数“10H”替换成对应的十进制数值“16”,同时也将十六进制数中的A、B、C、D、E、F替换成对应的十进制数值10、11、12、13、14、15。然后完全用十进制的规则计算出来,所得就是与该十六进制数相等十进制数。 例:1A6.3B8H =1 * 10^2 + A * 10^1 + 6 * 10^0 + 3 * 10^(-1)+ B * 10^(-2)+ 8 * 10^(-3) =1 * 16^2 + 10 * 16^1 + 6 * 16^0 + 3 * 16^(-1)+ 11 * 16^(-2)+ 8 * 16^(-3) =419.232422
(B):for(; ; ) 循环 for(; ; ) :无限循环。因for(;;)中没有循环条件,所以就是无条件循环 ,就是只能通过循环体中的内容来跳出循环 。
(C):执行次数
int x=0,i=0;
while(!x && i<3)
{
x++;
i++;
}
循环一共执行几次:1次
解析:
第一次:!x为真,i<3为真。执行循环:x++; x为1,i++; i为1。
第二次:!x为假。while括号里为假,不执行循环。
所以循环只执行1次。循环过后x=1,i=1。
2.1 数据结构 1、1,11,21,1211,111221,第六个数是多少? 答案:312211 解析: 11— 表示前一个数“1”是 1 个 1; 21— 表示前一个数“11”是 由 2 个 1 组成; 1211— 表示前一个数“21”是 由 1 个 2、1 个 1 组成; 111221— 即 11 12 21 ,表示前一个数“1211”是依次由 1 个 1,1 个 2,2 个 1组成; 所以,下一个数应填312211—即 31 22 11,表示前一个数“111221”是依次由3 个 1,2 个 2,1 个 1 组成; 同理,再下一个数根据312211填 13112221—即13 11 22 21, 表示前一个数“312211”是依次由 1 个 3,1 个 1,2 个 2,2 个 1 组成。 …依次类推
2、线性表的链式存储结构优于顺序存储结构。(X) 解析:以偏盖全。 顺序存储需要开辟一个定长的空间 ,读写速度快 ,缺点不可扩充容量 (如果要扩充需要开辟一个新的足够大的空间把原来的数据重写进去) 链式存储无需担心容量问题 ,读写速度相对慢些 ,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大 。 综上所述,如果元素个数已知,且插入删除较少的可以使用顺序结构,而对于频繁有插入删除操作,元素个数未知的,最好使用链式结构,编程时可结合要处理的数据的特点设计数据结构的。
3、下列说法错误的是 (B D) A.利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,这种形式的栈也称为顺序栈 B.top=0 时为空栈,元素进栈时指针 top 不断地减 1 C.当top等于数组的最大下标值时则栈满 D.栈不能对输入序列部分或全局起求逆作用 解析: A正确,虽然链栈也可以实现地址连续,但无法做到依次存放数据元素,因为除了元素域还需要存放指针域。因此满足条件的只有顺序栈。 B错误,top= -1时为空栈 ,top=0只能说明栈中只有一个元素,并且元素进栈时top应该自增 C正确,top所指向的对象永远是栈顶元素 D错误,栈的特性(先进后出)就决定了可以作为求逆元素的辅助空间。所谓求逆运算就是ABC依次入栈,输入CBA。
4、利用归并排序方法对数字序列:5,19,17,21,11,8,1进行排序,共需要进行( B)次比较 A.10 B.11 C.12 D.14 解析: (1)首先(5,19)一次 ,(17,21)一次,(11,8)一次 (2)归并(5,19)(17,21): 5首先与17进行比较得到 5,17;(17,21)组中已经没有比17更小的了,但(5,19)组中不一定,所以17与19进行比较得到5,17,19;此时(5,19)组中没有比19更小的数了,但是(17,21)组中却不一定,所以19与21进行比较,得到5,17,19,21 一共三次比较 (3)归并(8,11) (1) : 8首先与1比较 得到 1,8 然后不再比较,因为剩下的数比8大,那么一定比1大(哎呀)。这次比较了 1次 然后对(5,17,19,21)和(1,8,11)排序 首先5与1进行,得到 1,5 。(5,17,19,21)组中没有比5小的,但(1,8,11)组中不一定,所以5与8进行比较得到1,5,8.同样(1,8,11)组中往后没有比8小的数,但是(5,17,19,21)组中不一定,所以8和17比较得到1,5,8,17;(5,17,19,21)组中往后没有比17更小的数,所以17与11比较得到 1,5,8,11,17;剩下的都比17大,不再比较得到(1,5,8,11,17,19,21)比较四次 所以一共比较了1+1+1+4+4=11次。
5、 6、二叉树的三个部分:根结点、左子树、右子树 组成。
3.1 软件测试 1、软件验收测试包括哪些?(ACD) A、正式验收测试 B、白盒测试 C、alpha测试 D、beta测试 解析: 软件验收测试分为三类: 正式验收测试; 非正式验收测试其中包括α测试(由用户、测试人员、开发人员共同参与的内部测试。)和β测试(内测后的公测,即完全交给最终用户测试。)
2、软件生命周期中,需求阶段的软件缺陷修复费用最低。
3、测试设计员的职责有:(B C ) A、制定测试计划 B、设计测试用例 C、设计测试过程、脚本 D、评估测试活动 解析: 测试人员的职责是: 1.编写测试用例 2.执行测试,发现软件测试缺陷并提交缺陷报告 3.验证所发现的缺陷是否得到修改 4.编写测试总结报告 5.设计测试过程和脚本 制定测试计划应是测试经理 来做的,评估测试活动测试经理组织召集开发和测试的相关人员 来做
4.1 计算机网络 1、相同码元速率下,那种传输方式信息传输速率最高 ? (B) A、QPSK B、16QAM C、BPSK D、GMSK 解析: QPSK,它每符号为 2bit 的信息; 16QAM,它每符号为 4bit 的信息; BPSK,它每符号为 1bit 的信息; MSK,它每符号 2bit 的信息;
2、LTE系统多址方式包括(C D) A.TDMA B.CDMA C.OFDMA D.SC-FDMA
3、5G技术的应用场景有 4、网络层
2、蔚来笔试——2021.7.18
class Father(object):
x=1
class Son(Father):
pass
class Daughter(Father):
pass
print(Father.x,Son.x,Daughter.x)
Son.x=2
print(Father.x,Son.x,Daughter.x)
Father.x=3
print(Father.x,Son.x,Daughter.x)
结果:
(1, 1, 1)
(1, 2, 1)
(3, 2, 3)
在公司局域网上ping www.qq.com一定不涉及的网络协议是( A )。 A. UDP B. DNS C. ICMP D. RAAP
|