如何理解二进制算术运算01010100+10010011100-101的算法

关于数据的存储结构,以下选项描述正确的是( D )

A: 数据所占的存储空间量
B: 存储在外存中的数据
C: 数据在计算机中的顺序存储方式
D: 数据的逻辑结构在计算机中的表示

关于线性链表的描述,以下选项中正确的是( A )

A: 存储空间不一定连续,且各元素的存储顺序是任意的
B: 存储空间必须连续,且各元素的存储顺序是任意的
C: 存储空间不一定连续,且前件元素一定存储在后件元素的前面
D: 存储空间必须连续,且前件元素一定存储在后件元素的前面

关于软件危机,以下选项中描述错误的是 ( A )

B: 软件质量难以控制
C: 软件开发生产率低
D: 软件成本不断提高

以下选项中正确地描述了关系表 R、S、T 之间关系的是 ( C )


  

关于 Python 程序格式框架的描述,以下选项中错误的是 ( A )

A: Python 语言不采用严格的“缩进”来表明程序的格式框架 
B: Python 单层缩进代码属于之前最邻近的一行非缩进代码,多层缩进代码根据缩进关系决定所属范围
D: 判断、循环、函数等语法形式能够通过缩进包含一批 Python 代码,进而表达对应的语义
A: 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。 
B: 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。 
D: 慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0; 
注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。

关于 Python 组合数据类型,以下选项中描述错误的是 ( D )

B: Python 组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
C: 组合数据类型可以分为 3 类:序列类型、集合类型和映射类型 
D: 序列类型是二维元素向量,元素之间存在先后关系,通过序号访问

以下选项中不是 Python 对文件的写操作方法的是 ( D )


  

关于数据组织的维度,以下选项中描述错误的是 ( A )

A: 数据组织存在维度,字典类型用于表示一维和二维数据
B: 高维数据有键值对类型的数据构成,采用对象方式组织
C: 二维数据采用表格方式组织,对应于数学中的矩阵
D: 一维数据采用线性方式组织,对应于数学中的数组和集合等概念

下面代码的输出结果是:(3, 1)


  

解释:python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

下面代码的输出结果是 ( B )


  
#返回指定键的值,如果值不在字典中返回default值

关于算法的描述,以下选项中错误的是 ( B )

A: 算法是指解题方案的准确而完整的描述
B: 算法的复杂度主要包括时间复杂度和数据复杂度
C: 算法具有可行性、确定性、有穷性的基本特征
D: 算法的基本要素包括数据对象的运算和操作及算法的控制结构
解释:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。

关于数据结构的描述,以下选项中正确的是 ( A )

A: 数据结构指相互有关联的数据元素的集合
B: 数据的存储结构是指反映数据元素之间逻辑关系的数据结构
C: 数据结构不可以直观地用图形表示
D: 数据的逻辑结构有顺序、链接、索引等存储方式

对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数是: n

关于结构化程序设计方法原则的描述,以下选项中错误的是 ( B )

 

与信息隐蔽的概念直接相关的概念是 ( C )

 
 

关于软件工程的描述,以下选项中描述正确的是 ( A )

 
A: 软件工程是应用于计算机软件的定义、开发和维护的一整套方案、工具、文档和实践标准和工序
B: 软件工程包括3要素:结构化、模块化、面向对象
C: 软件工程工具是完成软件工程项目的技术手段
D: 软件工程方法支持软件的开发、管理、文档生成
解释:软件工程包括3要素:方法、工具 和 过程。
 

以下选项中表示关系表中的每一横行的是 ( A )

 
 

将E-R图转换为关系模式时,可以表示实体与联系的是 ( C )

 
 

关于Python循环结构,以下选项中描述错误的是 ( A )

 
A: 每个continue语句只有能力跳出当前层次的循环
B: break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行
C: 遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等
D: Python通过for、while等保留字提供遍历循环和无限循环结构
 

关于Python的lambda函数,以下选项中描述错误的是 ( B )

 
A: lambda函数将函数名作为函数结果返回
C: lambda用于定义简单的、能够在一行内表示的函数
D: 可以使用lambda函数定义列表的排序原则
 

下面代码实现的功能描述的是 ( A )

 
 
 
A: 接受用户输入的整数 n,输出 n 的阶乘值 
B: 接受用户输入的整数 n,判断 n 是否是素数并输出结论
C: 接受用户输入的整数 n,判断 n 是否是水仙花数
D: 接受用户输入的整数 n,判断 n 是否是完数并输出结论
 
 

  
 

以下选项中,不是Python对文件的打开模式的是 ( D )

 

  
 

下面代码的执行结果是:( A )

 

  
 
解释:ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。以下是 ord() 方法的语法:
ord(c) # c -- 字符。 返回值是对应的十进制整数。
chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。以下是 chr() 方法的语法:
code>chr(i) # i -- 可以是10进制也可以是16进制的形式的数字。返回值是当前整数对应的ascii字符。
# 以下展示了使用 chr() 方法的实例:
 
 
 

以下选项中,不属于结构化程序设计方法的是 ( A )

 
 

数据独立性是数据库技术的重要特点之一,关于数据独立性,以下选项中描述正确的是 ( D )

 
A: 数据与程序独立存放
B: 不同数据只能被对应的应用程序所使用
C: 不同数据被存放在不同的文件中
D: 以上三种说法都不对
 

关于Python语言的浮点数类型,以下选项中描述错误的是 ( C )

 
A: Python语言要求所有浮点数必须带有小数部分
B: 浮点数类型与数学中实数的概念一致
C: 小数部分不可以为0
D: 浮点数类型表示带有小数的类型
 

以下选项中说法不正确的是 ( D )

 
A: 解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程
B: 编译是将源代码转换成目标代码的过程
C: C语言是静态语言,Python语言是脚本语言
D: 静态语言采用解释方式执行,脚本语言采用编译方式执行
 

IDLE环境的退出命令是 ( A )

 
 

复数的计算(一):哪个选项是下面代码的执行结果 ( A )

 

  
 

  
 

复数的计算(二):哪个选项是下面代码的执行结果 ( C )

 

  
 
 
 

Python的格式化输出字符输出的结果为

 

  
 

  
 

以下选项中不属于线性数据结构的是 ( B )

 
解释:二叉树是非线性数据结构。
 

关于算法的空间复杂度,以下选项中描述正确的是 ( B )

 
A: 算法程序所占的存储空间
B: 算法执行过程中所需要的存储空间
C: 算法程序中的指令条数
 

设有一个已按各元素的值排好序的线性表(长度大于2),对给定的值k,分别用顺序查找法和二分查找法查找,比较的次数分别是s和b,在查找不成功的情况下,s和b的关系是 ( A )

 
 

一个算法一般应该具有的基本特征不包括 ( A )

 
B: 拥有足够多的情报
 

关于希尔排序,以下描述正确的是 ( D )

 
A: 希尔排序属于交换类排序法
B: 希尔排序法属于选择类排序法
C: 希尔排序法属于建堆排序法
D: 希尔排序法属于插入类排序法
解释:希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。
 

关于队列的描述中,以下描述正确的是 ( D )

 
A: 在队列中只能删除数据
B: 队列是先进后出的线性表
C: 在队列中只能插入数据
D: 队列是先进先出的线性表
 

栈和队列的共同点是 ( A )

 
A: 只允许在端点处插入和删除数据
 

在下列几种排序方法中,要求内存量最大的是 ( B )

 
 

在数据结构中,所使用的计算机无关的是 ( B )

 
C: 数据的物理结构和存储结构
 

关于线性表的顺序存储结构和线性表的链式存储结构,以下选项中描述正确的是 ( B )

 
A: 任意存取的存储结构、任意存取的存储结构
B: 随机存取的存储结构、顺序存取的存储结构
C: 随机存取的存储结构、随机存取的存储结构
D: 顺序存取的存储结构、顺序存取的存储结构
 

已知数据表A中每个元素距其位置不远,为节省时间,宜采用的算法是 ( C )

 
 

用链表表示线性表的优点是 ( A )

 
A: 便于插入和删除操作
C: 数据元素的物理结构和逻辑结构相同
D: 花费的存储空间较顺序存储少
 

支持子程序调用的数据结构是 ( B )

 
 

以下选项中,描述了算法的时间复杂度的是 ( D )

 
A: 算法的时间复杂度是指执行算法程序所需要的时间
B: 算法的时间复杂度是指算法程序的长度
C: 算法的时间复杂度是指算法程序中的指令条数
D: 算法的时间复杂度是指算法执行过程中所需要的基本运算次数
 

对长度为n的线性表作快速排序,在最坏情况下,比较次数为 ( D )

 
 

关于算法的有穷性,以下选项中描述正确的是 ( B )

 
A: 算法的长度是有限的
B: 算法程序的运行时间是有限的
C: 算法程序所处理的数据量是有限的
D: 算法只能被有限的用户使用
 

关于结构化程序设计风格,以下选项中描述正确的是 ( C )

 
B: 模块只有一个入口,可以有多个出口
C: 使用顺序、选择和重复(循环)3种基本控制结构表示程序的控制逻辑
D: 注重提高程序的执行效率
 

结构化程序设计主要强调的是 ( D )

 
 

在面向对象方法中,一个对象请求另一对象为其服务的方式是通过哪个选项发送 ( A )

 
 

在结构化方法的软件开发阶段中,软件功能分解所处的阶段是 ( C )

 
 

下列工具中,不属于结构化分析常用的是 ( A )

 
 

源程序的文档化不包括 ( C )

 
A: 符号的命名要有实际意义
 

在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( B )

 
 

检查软件产品是否符合需求定义的测试是 ( A )

 
 

软件调试的目的是 ( C )

 
 

以下选项中,不属于软件调试技术的是 ( C )

 
 

软件测试实施步骤中不包括 ( B )

 
 

软件设计包括软件的结构、数据接口和过程设计,下列选项中属于软件的过程设计的是 ( C )

 
C: 系统结构部件转换成软件的过程描述
 

需求分析阶段的任务是确定 ( D )

 
 

在软件工程中,白盒测试法可用于测试程序的内部结构。下列选项中描述正确的是 ( B )

 
A: 白盒测试法将程序看作地址的集合
B: 白盒测试法将程序看作路径的集合
C: 白盒测试法将程序看作循环的集合
D: 白盒测试法将程序看作目标的集合
 

以下选项中不属于软件设计原则的是 ( A )

 
 

以下选项中,不属于软件需求分析阶段主要工作的是 ( B )

 
 

以下选项中描述正确的是 ( D )

 
A: 数据库设计是指设计数据库管理系统
B: 数据库系统中,数据的物理结构必须与逻辑结构一致
C: 数据库是一个独立的系统,不需要操作系统的支持
D: 数据库技术的根本目标是要解决数据共享的问题
 

能够给出数据库物理存储结构与物理存取方法的是 ( A )

 
 

数据库设计内容的两个方面包括 ( C )

 
A: 内模式设计和物理设计
B: 结构特性设计和行为特性设计
C: 概念设计和逻辑设计
D: 模式设计和内模式设计
 

关系数据库管理系统能实现的专门关系运算是 ( B )

 
A: 排序、索引、统计
B: 选择、投影、连接
C: 关联、更新、排序
D: 显示、打印、制表
 

设关系R是4元关系,关系S是一个5元关系,关系T是R与S的笛卡儿积,即T=R×S。以下选项中描述正确的是 ( A )

 
 

在数据库中,索引属于哪个选项的内容?( C )

 
 

在数据库概念设计的过程中,下列视图设计次序中错误的是 ( B )

 
 

数据处理的最小单位是 ( C )

 
 

描述单个用户使用的数据视图是 ( A )

 
 

在数据管理技术发展过程中,下列关于文件系统与数据库系统主要区别的描述中正确的是 ( D )

 
A: 数据库系统具有数据无冗余
B: 数据库系统具有专门的数据管理软件
C: 数据库系统具有数据可共享
D: 数据库系统具有特定的数据模型
 

以下选项中,不属于数据模型所描述的内容是 ( A )

 
 

层次型、网状型和关系型数据库划分的原则是 ( C )

 
C: 数据之间的联系方式
 

数据库应用系统中的核心问题是 ( B )

 
C: 数据库管理员培训
 

在一个关系中,如果存在多个属性(或属性组)都能用来唯一标识该关系的元组,且其任何子集都不具有这一特性。该关系的这些属性(或属性组)被定义为 ( C )

 
 

在E-R图中,用来表示联系的图形是 ( D )

 
 

在下面列出的数据模型中,属于概念数据模型的是 ( C )

 
 

关于数据模型的描述,以下选项中错误的是 ( A )

 
A: 数据库中的数据模型可以将计算机数据库中物理世界的要求反映到复杂的现实世界
B: 数据模型按不同应用层次分为三种类型:概念数据模型、逻辑数据模型和物理数据模型
C: 数据模型描述的内容有三个部分:数据结构、数据操作和数据约束
D: 数据是现实世界符号的抽象,数据模型是数据特征的抽象
 

以下选项中说法错误的是 ( C )

 
A: DML是数据操纵语言
B: DCL是数据控制语言
D: DDL是数据定义语言
解释: DBMS 是数据库管理系统。
 
 
 

以下选项中,不是 Python 语言保留字的是 ( A )

 
解释:查看保留字的方法如下:
 

  
 

下面代码的输出结果是 ( B )

 

  
 

  
 

下面代码的输出结果是 ( A )

 

  
 
解释: round 是一个四舍五入的函数,两个参数,第一个是值,第二个是 取值的小数位数。
 

  
 

给出如下代码,可以输出“python”的是 ( B )

 

  
 
解释:Python lower() 方法转换字符串中所有大写字符为小写。 Python upper() 方法将字符串中的小写字母转为大写字母。
 

关于Python注释,以下选项中描述错误的是 ( A )

 
A: Python注释语句不被解释器过滤掉,也不被执行
B: 注释可以辅助程序调试
C: 注释可用于标明作者和版权信息
D: 注释用于解释代码原理或者用途
 

关于Python赋值语句,以下选项中不合法的是 ( C )

 
 

关于Python程序中与“缩进”有关的说法中,以下选项中正确的是 ( C )

 
A: 缩进统一为4个空格
B: 缩进是非强制性的,仅为了提高代码可读性
C: 缩进在程序中长度统一且强制使用
D: 缩进可以用在任何语句之后,表示语句间的包含关系
 
 
 
 
解释:complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
 

给出如下代码,下述代码的输出结果是 ( B )

 

  
 

  
 

下面代码的输出结果是 ( B )

 

  
 
解释: Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。
 

下面代码的输出结果是 ( A )

 

  
 
解释: Python capitalize()将字符串的第一个字母变成大写,其他字母变小写。对于 8 位字节编码需要根据本地环境。
 

关于Python循环结构,以下选项中描述错误的是 ( C )

 
A: Python通过for、while等保留字提供遍历循环和无限循环结构
B: break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行
C: 每个continue语句只有能力跳出当前层次的循环
D: 遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等
 
 
 
 
A: 生成一个[a, b]之间的随机整数
B: 生成一个(a, b)之间的随机数
C: 生成一个[a, b]之间的随机小数
D: 生成一个均值为a,方差为b的正态分布
 

以下选项中描述正确的是 ( D )

 
 

random库中用于生成随机小数的函数是 ( A )

 
 

关于递归函数基例的说明,以下选项中错误的是 ( B )

 
A: 递归函数的基例决定递归的深度
B: 每个递归函数都只能有一个基例
C: 递归函数必须有基例
D: 递归函数的基例不再进行递归
 

以下选项中,不属于函数的作用的是 ( A )

 
A: 提高代码执行速度
 

假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是 ( B )

 
A: 参数是列表类型时,改变原参数的值
B: 参数的值是否改变与函数中对变量的操作有关,与参数类型无关
C: 参数是整数类型时,不改变原参数的值
D: 参数是组合类型(可变对象)时,改变原参数的值
 

在Python中,关于全局变量和局部变量,以下选项中描述不正确的是 ( B )

 
A: 一个程序中的变量包含两类:全局变量和局部变量
B: 全局变量不能和局部变量重名
C: 全局变量一般没有缩进
D: 全局变量在程序执行的全过程有效
 

以下选项中,对于递归程序的描述错误的是 ( C )

 
B: 递归程序都可以有非递归编写方法
 

关于lambda函数,以下选项中描述错误的是 ( A )

 
C: lambda函数将函数名作为函数结果返回
D: 定义了一种特殊的函数
 

以下选项中,对于函数的定义错误的是 ( A )

 
 

关于函数的参数,以下选项中描述错误的是 ( A )

 
A: 可选参数可以定义在非可选参数的前面
B: 一个元组可以传递给带有星号的可变参数
C: 在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现
D: 在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数指定默认值
 

关于函数,以下选项中描述错误的是 ( A )

 
A: 函数名称不可赋给其他变量
B: 一条函数定义定义一个用户自定义函数对象
D: 函数定义语句可执行
 

关于函数的关键字参数使用限制,以下选项中描述错误的是 ( A )

 
A: 关键字参数必须位于位置参数之前
B: 不得重复提供实际参数
C: 关键字参数必须位于位置参数之后
D: 关键字参数顺序无限制
 

关于Python的元组类型,以下选项中描述错误的是 ( D )

 
A: 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
B: 元组一旦创建就不能被修改
C: Python中元组采用逗号和圆括号(可选)来表示
D: 元组中元素不可以是不同类型
 

S和T是两个集合,对S&T的描述正确的是 ( C )

 
A: S和T的补运算,包括集合S和T中的非相同元素
B: S和T的差运算,包括在集合S但不在T中的元素
C: S和T的交运算,包括同时在集合S和T中的元素
D: S和T的并运算,包括在集合S和T中的所有元素
 

设序列s,以下选项中对max(s)的描述正确的是 ( D )

A: 一定能够返回序列s的最大元素
 B: 返回序列s的最大元素,如果有多个相同,则返回一个元组类型
 C: 返回序列s的最大元素,如果有多个相同,则返回一个列表类型 
 D: 返回序列s的最大元素,但要求s中元素之间可比较
 

以下选项中不能生成一个空字典的是 ( C )

 
 

给定字典d,以下选项中对d.keys()的描述正确的是 ( C )

 
A: 返回一个列表类型,包括字典d中所有键
B: 返回一个集合类型,包括字典d中所有键
C: 返回一种dict_keys类型,包括字典d中所有键
D: 返回一个元组类型,包括字典d中所有键
 

给定字典d,以下选项中对d.values()的描述正确的是 ( A )

 
B: 返回一个集合类型,包括字典d中所有值
C: 返回一个元组类型,包括字典d中所有值
D: 返回一个列表类型,包括字典d中所有值
 

给定字典d,以下选项中对d.items()的描述正确的是 ( A )

 
A: 返回一种dict_items类型,包括字典d中所有键值对
B: 返回一个元组类型,每个元素是一个二元元组,包括字典d中所有键值对
C: 返回一个列表类型,每个元素是一个二元元组,包括字典d中所有键值对
D: 返回一个集合类型,每个元素是一个二元元组,包括字典d中所有键值对
 

给定字典d,以下选项中对x in d的描述正确的是 ( B )

 
A: x是一个二元元组,判断x是否是字典d中的键值对
B: 判断x是否是字典d中的键
C: 判断x是否是在字典d中以键或值方式存在
D: 判断x是否是字典d中的值
 

给定字典d,以下选项中可以清空该字典并保留变量的是 ( D )

 
 

关于Python组合数据类型,以下选项中描述错误的是 ( A )

 
A: 序列类型是二维元素向量,元素之间存在先后关系,通过序号访问
C: *Python组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易
D: 组合数据类型可以分为3类:序列类型、集合类型、映射类型
 

关于Python的元组类型,以下选项中描述错误的是 ( A )

 
A: 元组中元素不可以是不同类型
B: 元组一旦创建就不能被修改
C: *Python中元组采用逗号和圆括号(可选)来表示
D: 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
 

给出如下代码以下选项中能输出字符“八”第一次出现的索引位置的是:( B )

 
s = list("巴老爷有八十八棵芭蕉树,来了八十八个把式要在巴老爷八十八棵芭蕉树下住。老爷拔了八十八棵芭蕉树,不让八十八个把式在八十八棵芭蕉树下住。八十八个把式烧了八十八棵芭蕉树,巴老爷在八十八棵树边哭。")
 

  
 

下面代码的输出结果是 ( C )

 

  
 

  
 

以下选项中,不是Python对文件的打开模式的是( C )

 
 

关于数据组织的维度,以下选项中描述错误的是 ( A )

 
A: 数据组织存在维度,字典类型用于表示一维和二维数据
B: 二维数据采用表格方式组织,对应于数学中的矩阵
C: 一维数据采用线性方式组织,对应于数学中的数组和集合等概念
D: 高维数据由键值对类型的数据构成,采用对象方式组织
 

关于Python文件打开模式的描述,以下选项中错误的是 ( C )

 
r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
 

关于CSV文件的描述,以下选项中错误的是( B )

 
A: *CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据
B: *CSV文件通过多种编码表示字符
C: 整个CSV文件是一个二维数据
D: *CSV文件的每一行是一维数据,可以使用Python中的列表类型表示
 

“键值对(字典)”类型数据的组织维度是( D )

 
 

以下选项中,不是Python文件处理.seek()方法的参数是( C )

 
解释:seek() 方法用于移动文件读取指针到指定位置。seek() 方法语法如下:
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,
表示要从哪个位置开始偏移;0代表从文件开头开始算起,
1代表从当前位置开始算起,2代表从文件末尾算起。
 

以下选项中,不是Python文件打开的合法模式组合是( C )

 
 

关于二维数据CSV存储问题,以下选项中描述错误的是( D )

 
A: CSV文件的每一行表示一个具体的一维数据
B: CSV文件的每行采用逗号分隔多个元素
C: CSV文件不是存储二维数据的唯一方式
D: CSV文件不能包含二维数据的表头信息
 

表达式",".join(ls)中ls是列表类型,以下选项中对其功能的描述正确的是 ( D )

 
A: 将逗号字符串增加到列表ls中
B: 在列表ls每个元素后增加一个逗号
C: 将列表所有元素连接成一个字符串,每个元素后增加一个逗号
D: 将列表所有元素连接成一个字符串,元素之间增加一个逗号
 

两次调用文件的write方法,以下选项中描述正确的是( A )

 
A: 连续写入的数据之间无分隔符
B: 连续写入的数据之间默认采用换行分隔
C: 连续写入的数据之间默认采用空格分隔
D: 连续写入的数据之间默认采用逗号分隔
 
 
A: *f是文件句柄,用来在程序中表达文件
D: 将f当作文件对象,f.read()可以读入文件全部信息
 

关于下面代码中的变量x,以下选项中描述正确的是 ( D )

 

  
 
A: 变量x表示文件中的一组字符
B: 变量x表示文件中的全体字符
C: 变量x表示文件中的一个字符 
D: 变量x表示文件中的一行字符
 
对应的方法可以用于向CSV文件写入和解析一二维数据的分别是:join()和split()

关于CSV文件的扩展名,以下选项中描述正确的是( D )

 
D: 可以为任意扩展名
 

关于文件的打开方式,以下选项中描述正确的是 ( B )

 
A: 文件只能选择二进制或文本方式打开
B:所有文件都可能以二进制方式打开
C: 文本文件只能以文本方式打开
D: 所有文件都可能以文本方式打开
 

当打开一个不存在的文件时,以下选项中描述正确的是( B )

 
B: 根据打开类型不同,可能不报错
C: 文件不存在则创建文件
D: 不存在文件无法被打开
关于turtle库的形状绘制函数,以下选项中描述错误的是
 

关于turtle库的形状绘制函数,以下选项中描述错误的是 ( A )

 
 
 
B: 设置初始化随机数种子a
C: 生成一个k比特长度的随机整数
D: 生成一个随机整数
 
 
A: 返回系统当前时间戳对应的易读字符串表示
C: 返回系统当前时间戳对应的本地时间的struct_time对象,本地之间经过时区转换
D: 返回系统当前的时间戳
 
 
A: 将当前程序挂起secs秒,挂起即暂停执行
C: 返回一个代表时间的精确浮点数,两次或多次调用,其差值用来计时
 
 
A: 将x转换成浮点数
B: 去掉字符串x最外侧引号,当作Python表达式评估返回其值
C: 计算字符串x作为Python语句的值
D: 将整数x转换为十六进制字符串
 
基本的Python内置函数sorted(x)的作用是:对组合数据类型x进行排序,默认从小到大。
 
A: 精确模式,返回中文文本x分词后的列表变量
B: 搜索引擎模式,返回中文文本x分词后的列表变量
C: 全模式,返回中文文本x分词后的列表变量
D: 向分词词典中增加新词w
 

关于数据流图(DFD)的描述,以下选项中正确的是 ( D )

 
A: 软件概要设计的工具
B: 软件详细设计的工具
C: 面向对象需求分析工具
D: 结构化方法的需求分析工具
 

数据库设计中,反映用户对数据要求的模式是( B )

 
 

在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示的阶段是 ( C )

 
 

关于二叉树的遍历,以下选项中描述错误的是( A )

 
A: 前序遍历是先遍历左子树,然后访问根结点,最后遍历右子树
B: 后序遍历二叉树的过程是一个递归的过程
C: 二叉树的遍历是指不重复地访问二叉树中的所有结点
D: 二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历
 

在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( C )

 
 

在PFD图中用箭头表示( C )

 
 

关于函数的可变参数,可变参数*args传入函数时存储的类型是( B )

 
 

关于函数作用的描述,以下选项中错误的是 ( C )

 
C: 提高代码执行速度
D: 增强代码的可读性
 

关于形参和实参的描述,以下选项中正确的是( D )

 
A: 函数定义中参数列表里面的参数是实际参数,简称实参
B: 参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参
C: 程序在调用时,将形参复制给函数的实参
D: 函数调用时,实参默认采用按照位置顺序的方式传递给函数,Python也提供了按照形参名称输入实参的方式
 

以下选项中,正确地描述了浮点数0.0和整数0相同性的是( B )

 
A: 它们使用相同的硬件执行单元
B: 它们具有相同的值
C: 它们具有相同的数据类型
D: 它们使用相同的计算机指令处理方法
 
 
A: 生成一个均值为a,方差为b的正态分布
B: 生成一个(a, b)之间的随机数
C: 生成一个[a, b]之间的随机整数
D: 生成一个[a, b]之间的随机小数
 
 

  
 

  
 
 
time.ctime()的作用是:返回系统当前时间戳对应的易读字符串表示 time.gmtime()的作用是:返回系统当前时间戳对应的struct_time对象 time库的time.time()函数的作用是: 返回系统当前的时间戳
Python网络爬虫方向的第三方库是:scrapy、
将Python脚本程序转变为可执行程序的第三方库是: PyInstaller、
Python网络爬虫方向的第三方库是:scrapy、
Python语言重要的第三方库:PIL(图像处理)
Python支持符号计算的第三方库是:SymPy
Python支持多种语言的自然语言处理第三方库是:NLTK
WeRoBot:是一个微信公众号开发框架,也称为微信机器人框架
MyQR是一个能够产生基本二维码、艺术二维码和动态效果二维码的Python第三方库
Python语言的用于硬件开发的第三方库是:Pyserial

  

给标识符关联名字的过程是( B )

 
 
IDLE菜单中的快捷键 如下:
 
解释:python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
 

下面代码的执行结果是 ( B )


  
创建新文件的快捷键是:Ctrl+N 
将选中区域缩进的快捷键是:Ctrl+] 
将选中区域取消缩进的快捷键是: Ctrl+[ 
将选中区域注释的快捷键是: Alt+3 
将选中区域取消注释的快捷键是: Alt+4 
选中区域的空格替换为Tab的快捷键是: Alt+5 
将选中区域的Tab替换为空格的快捷键是: Alt+6
 
 
解释:R-Studio是一个功能强大、节省成本的反删除和数据恢复软件系列。
 

关于Python的数字类型,以下选项中描述错误的是 ( D )

 
A: 1.0是浮点数,不是整数
B: 复数类型虚部为0时,表示为1+0j
C: 整数类型的数值一定不会出现小数点
D: 浮点数也有十进制、二进制、八进制和十六进制等表示方式
 

关于Python的浮点数类型,以下选项中描述错误的是 ( D )

 
A: 浮点数类型与数学中实数的概念一致,表示带有小数的数值
C: 浮点数有两种表示方法:十进制表示和科学计数法
D: Python语言的浮点数可以不带小数部分
 

下面代码的输出结果是 ( D )

 

  
 

  
 

下面代码的输出结果是 ( D )


1、设计模式是什么? 你知道哪些设计模式,并简要叙述?

设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。
3). 单例模式:通过static关键词,声明全局变量。在整个进程运行期间只会被赋值一次。
4). 观察者模式:KVO是典型的通知模式,观察某个属性的状态,状态发生变化时通知观察者。
5). 委托模式:代理+协议的组合。实现1对1的反向传值操作。
6). 工厂模式:通过一个类方法,批量的根据已有模板生产对象。

1). MVVM是对胖模型进行的拆分,其本质是给控制器减负,将一些弱业务逻辑放到VM中去处理。
2). MVC是一切设计的基础,所有新的设计模式都是基于MVC进行的改进。

1). #import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入。
2). @class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含。

frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父view的坐标系统)
bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是本身坐标系统)

5、Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答:Objective-C的类不可以多重继承;可以实现多个接口(协议);Category是类别;一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

7、@property中有哪些属性关键字?@property 后面可以有哪些修饰符?

2). readonly 是只读特性。只会生成getter方法,不会生成setter方法,不希望属性在类外改变。
3). assign 是赋值特性。setter方法将传入参数赋值给实例变量;仅设置变量时,assign用于基本数据类型。
5). copy 表示拷贝特性。setter方法将传入对象复制一份,需要完全一份新的变量时。
6). nonatomic 非原子操作。决定编译器生成的setter和getter方法是否是原子操作,atomic表示多线程安全,一般使用nonatomic,效率高。

9、什么情况使用 weak 关键字,相比 assign 有什么不同?

1.在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性。
2.自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。

IBOutlet连出来的视图属性为什么可以被设置成weak?
因为父控件的subViews数组已经对它有一个强引用。

weak 表明该属性定义了一种“非拥有关系”。在属性所指的对象销毁时,属性值会自动清空(nil)。

block 使用 copy 是从 MRC 遗留下来的“传统”,在 MRC 中,方法内部的 block 是在栈区的,使用 copy 可以把它放到堆区.在 ARC 中写不写都行:对于 block 使用 copy 还是 strong 效果是一样的,但写上 copy 也无伤大雅,还能时刻提醒我们:编译器自动对 block 进行了 copy 操作。如果不写 copy ,该类的调用者有可能会忘记或者根本不知道“编译器会自动对 block 进行了 copy 操作”,他们有可能会在调用之前自行拷贝属性值。这种操作多余而低效。

  1. 因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本。
  2. 如果我们使用是 strong ,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性。

总结:使用copy的目的是,防止把可变类型的对象赋值给不可变类型的对象时,可变类型对象的值发生变化会无意间篡改不可变类型对象原来的值。

12、浅拷贝和深拷贝的区别?

浅拷贝:只复制指向对象的指针,而不复制引用对象本身。
深拷贝:复制引用对象本身。内存中存在了两份独立对象本身,当修改A时,A_copy不变。

在非集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;
对可变对象进行copy和mutableCopy都是内容复制。用代码简单表示如下:


  1. 在集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;
    对可变对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对集合内的对象元素仍然是指针复制。(即单层内容复制)



    只有对不可变对象进行copy操作是指针复制(浅复制),其它情况都是内容复制(深复制)!

16、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。

  1. @synthesize 的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。
19、常见的 Objective-C 的数据类型有那些,和C的基本数据类型有什么区别?如:NSInteger和int
20、id 声明的对象有什么特性?

答:id 声明的对象具有运行时的特性,即可以指向任意类型的Objcetive-C的对象。

21、Objective-C 如何对内存管理的,说说你的看法和解决方法?

答:Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。
1). 自动内存计数ARC:由Xcode自动在App编译阶段,在代码中添加内存管理代码。
2). 手动内存计数MRC:遵循内存谁申请、谁释放;谁添加,谁释放的原则。
3). 内存释放池Release Pool:把需要释放的内存统一放在一个池子中,当池子被抽干后(drain),池子中所有的内存空间也被自动释放掉。内存池的释放操作分为自动和手动。自动释放受runloop机制影响。

22、Objective-C 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?
  1. 分类有名字,类扩展没有分类名字,是一种特殊的分类。
  2. 分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法。
  3. 继承可以增加、修改或者删除方法,并且可以增加属性。
24、我们说的OC是动态运行时语言是什么意思?

答:主要是将数据类型的确定由编译时,推迟到了运行时。简单来说, 运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。

Delegate(委托模式):1对1的反向消息通知功能。
Notification(通知模式):只想要把消息发送出去,告知某些状态的变化。但是并不关心谁想要知道这个。

28、KVC的底层实现?

当一个对象调用setValue方法时,方法内部会做以下操作:
1). 检查是否存在相应的key的set方法,如果存在,就调用set方法。
2). 如果set方法不存在,就会查找与key相同名称并且带下划线的成员变量,如果有,则直接给成员变量属性赋值。
3). 如果没有找到_key,就会查找相同名称的属性key,如果有就直接赋值。
这些方法的默认实现都是抛出异常,我们可以根据需要重写它们。

29、KVO的底层实现?
  1. loadView:开始加载视图控制器自带的view。
31、方法和选择器有何不同?

selector是一个方法的名字,方法是一个组合体,包含了名字和实现。

32、你是否接触过OC中的反射机制?简单聊一下概念和使用
33、调用方法有两种方式:
34、如何对iOS设备进行性能测试?
35、开发项目时你是怎么检查内存泄露?

答:懒加载就是只在用到的时候才去初始化。也可以理解成延时加载。
我觉得最好也最简单的一个例子就是tableView中图片的加载显示了, 一个延时加载, 避免内存过高,一个异步加载,避免线程堵塞提高用户体验。

isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,他指向对象的类,而Class里也有个isa的指针, 指向meteClass(元类)。元类保存了类方法的列表。当类方法被调 用时,先会从本身查找类方法的实现,如果没有,元类会向他父类查找该方法。同时注意的是:元类(meteClass)也是类,它也是对象。元类也有isa指针,它的isa指针最终指向的是一个根元类(root meteClass)。根元类的isa指针指向本身,这样形成了一个封闭的内循环。

40、如何访问并修改一个类的私有属性?

1). 一种是通过KVC获取。
2). 通过runtime访问并修改私有属性。

41、一个objc对象的isa的指针指向什么?有什么作用?

答:指向他的类对象,从而可以找到对象上的方法。

42、下面的代码输出什么?
43、写一个完整的代理,包括声明、实现

isKindOfClass:作用是某个对象属于某个类型或者继承自某类型。
selector:通过方法名,获取在内存中的函数的入口地址。

1). 二者都用于传递消息,不同之处主要在于delegate是一对一的,notification是一对多的。
3). delegate需要两者之间必须建立联系,不然没法调用代理的方法;notification不需要两者之间有联系。

闭包(block):闭包就是获取其它函数局部变量的匿名函数。

在控制器间传值可以使用代理或者block,使用block相对来说简洁。
在前一个控制器的touchesBegan:方法内实现如下代码。


1). 在block内部使用外部指针且会造成循环引用情况下,需要用__week修饰外部指针:

2). 在block内部如果调用了延时函数还使用弱指针会取不到该指针,因为已经被销毁了,需要在block内部再将弱指针重新强引用一下。

3). 如果需要在block内部改变外部栈区变量的话,需要在用__block修饰外部变量。

答:这种问题在开发时经常遇到。原因是访问了野指针,比如访问已经释放对象的成员变量或者发消息、死循环等。

50、lldb(gdb)常用的控制台调试命令?

1). p 输出基本类型。是打印命令,需要指定类型。是print的简写

3). expr 可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。

2). Zombies:检查是否访问了僵尸对象,但是这个工具只能从上往下检查,不智能。
3). Allocations:用来检查内存,写算法的那批人也用这个来检查。
4). Leaks:检查内存,看是否有内存泄露。

52、iOS中常用的数据存储方式有哪些?
53、iOS的沙盒目录结构是怎样的?

1). Application:存放程序源文件,上架前经过数字签名,上架后不可修改。
2). Documents:常用目录,iCloud备份目录,存放数据。(这里不能存缓存文件,否则上架不被通过)
Caches:存放体积大又不需要备份的数据。(常用的缓存路径)
4). tmp:存放临时文件,不会被备份,而且这个文件下的数据有可能随时被清除的可能。

54、iOS多线程技术有哪几种方式?
69、OC中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?
56、写出使用GCD方式从子线程回到主线程的方法代码
5、如何处理多个网络请求的并发的情况?
57、如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)
// 获取全局并发队列 // 当并发队列组中的任务执行完毕后才会执行这里的代码

1.在它前面的任务执行结束后它才执行,它后面的任务要等它执行完成后才会开始执行。


59、以下代码运行结果如何?

从字面上讲就是运行循环,它内部就是do-while循环,在这个循环内部不断地处理各种任务。
一个线程对应一个RunLoop,基本作用就是保持程序的持续运行,处理app中的各种事件。通过runloop,有事运行,没事就休息,可以节省cpu资源,提高程序性能。

主线程的run loop默认是启动的。iOS的应用程序里面,程序启动后会有一个如下的main()函数


Runtime又叫运行时,是一套底层的C语言API,其为iOS内部的核心之一,我们平时编写的OC代码,底层都是基于它来实现的。

62、Runtime实现的机制是什么,怎么用,一般用于干嘛?

4). 因此,可以说 Runtime 是OC的底层实现,是OC的幕后执行者。

63、有了Runtime库,能做什么事情呢?

Runtime库里面包含了跟类、成员变量、方法相关的API。
(1)获取类里面的所有成员变量。
(2)为类动态添加成员变量。
(3)动态改变类的方法实现。
(4)为类动态添加新的方法等。
因此,有了Runtime,想怎么改就怎么改。

64、什么是 Method Swizzle(黑魔法),什么情况下会使用?

1). 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法 Method Swizzle。
2). Method Swizzle 指的是改变一个已存在的选择器对应的实现的过程。OC中方法的调用能够在运行时通过改变,通过改变类的调度表中选择器到最终函数间的映射关系。
3). 在OC中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用OC的动态特性,可以实现在运行时偷换selector对应的方法实现。
4). 每个类都有一个方法列表,存放着selector的名字和方法实现的映射关系。IMP有点类似函数指针,指向具体的方法实现。

65、_objc_msgForward 函数是做什么的,直接调用它将会发生什么?

答:_objc_msgForward是 IMP 类型,用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,_objc_msgForward会尝试做消息转发。

TCP:传输控制协议。
UDP:用户数据协议。

TCP 是面向连接的,建立连接需要经历三次握手,是可靠的传输层协议。
UDP 是面向无连接的,数据传输是不可靠的,它只管发,不管收不收得到。
简单的说,TCP注重数据安全,而UDP数据传输快点,但安全性一般。

67、通信底层原理(OSI七层模型)

OSI采用了分层的结构化技术,共分七层:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

XMPP是一种以XML为基础的开放式实时通信协议。
简单的说,XMPP就是一种协议,一种规定。就是说,在网络上传东西,XMM就是规定你上传大小的格式。

答:UITableView 通过重用单元格来达到节省内存的目的: 通过为每个单元格指定一个重用标识符,即指定了单元格的种类,当屏幕上的单元格滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元格从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,如果有,就拿过来用,如果没有就创建一个来使用。

71、用伪代码写一个线程安全的单例模式
72、如何实现视图的变形?
73、在手势对象基础类UIGestureRecognizer的常用子类手势类型中哪两个手势发生后,响应只会执行一次?
74、字符串常用方法:

2、正确的解决方案:使用绘图技术

3、还有一种方案:使用了贝塞尔曲线"切割"个这个图片, 给UIImageView 添加了的圆角,其实也是通过绘图技术来实现的。

//1.裁剪--必须要先裁剪 //裁剪是裁剪的上下文 //绘制的图片是在原来的上下文为坐标系的 //5.从上下文中获得最新的图片 //使用贝塞尔曲线画出一个圆形图 第六种方法:通过混合图层 此方法就是在要添加圆角的视图上再叠加一个部分透明的视图,只对圆角部分进行遮挡。其实就是中间圆形部分透明,不遮挡底部的控件,不过同时也需要遮挡颜色和view背景色一致才行。 此方法虽然是最优解,没有离屏渲染,没有额外的CPU计算,但是应用范围有限。
76、你是怎么封装一个view的

1). 可以通过纯代码或者xib的方式来封装子控件
2). 建立一个跟view相关的模型,然后将模型数据传给view,通过模型上的数据给view的子控件赋值

// 纯代码初始化控件时,一定会走这个方法 // 通过xib初始化控件时一定会走这个方法
  1. GET用于向服务器请求数据,POST用于提交数据
  2. GET请求,请求参数拼接形式暴露在地址栏,而POST请求参数则放在请求体里面,因此GET请求不适合用于验证密码等操作
  3. GET请求的URL有长度限制,POST请求不会有长度限制
78、请简单的介绍下APNS发送系统消息的机制

APNS优势:杜绝了类似安卓那种为了接受通知不停在后台唤醒程序保持长连接的行为,由iOS系统和APNS进行长连接替代。

2). 应用程序接收到设备令牌并发送给自己的后台服务器

3). 服务器把要推送的内容和设备令牌发送给APNS

4). APNS根据设备令牌找到设备,再由iOS根据APPID把推送内容展示

加载图片的过程大致如下:
1.首先会在 SDWebImageCache 中寻找图片是否有对应的缓存, 它会以url 作为数据的索引先在内存中寻找是否有对应的缓存
2.如果缓存未找到就会利用通过MD5处理过的key来继续在磁盘中查询对应的数据, 如果找到了, 就会把磁盘中的数据加载到内存中,并将图片显示出来
3.如果在内存和磁盘缓存中都没有找到,就会向远程服务器发送请求,开始下载图片
4.下载后的图片会加入缓存中,并写入磁盘中
5.整个获取图片的过程都是在子线程中执行,获取到图片后回到主线程将图片显示出来

  1. 从内存(字典)中找图片(当这个图片在本次使用程序的过程中已经被加载过),找到直接使用。
  2. 从沙盒中找(当这个图片在之前使用程序的过程中被加载过),找到使用,缓存到内存中。
  3. 从网络上获取,使用,缓存到内存,缓存到沙盒。
81、不用中间变量,用两种方法交换A和B的值
// 异或(相同为0,不同为1,可以理解为不进位加法)
83、友盟统计接口统计的所有功能
84、APP启动速度,APP停留页面时间等
* 栈是一种数据结构,特点:先进后出 * 练习:使用全局变量模拟栈的操作 //保护全局变量:在全局变量前加static后,这个全局变量就只能在本文件中使用

选择排序、冒泡排序、插入排序三种排序算法可以总结为如下:
都将数组分为已排序部分和未排序部分。

  1. 选择排序将已排序部分定义在左端,然后选择未排序部分的最小元素和未排序部分的第一个元素交换。
  1. 冒泡排序将已排序部分定义在右端,在遍历未排序部分的过程执行交换,将最大元素交换到最右端。
  1. 插入排序将已排序部分定义在左端,将未排序部分元的第一个元素插入到已排序部分合适的位置。
//遍历`数组的个数`次 i = 0 的时候,j的相邻两个位置都要比较排一下位置: //遍历数组的每一个`索引`(不包括最后一个,因为比较的是j+1) //根据索引的`相邻两位`进行`比较`
90、折半查找(二分查找)
92、避免使用C语言中的基本数据类型,建议使用 Foundation 数据类型,对应关系如下:
93、HomeKit,是苹果2014年发布的智能家居平台。

Quatarz 2d 是Apple提供的基本图形工具库。只是适用于2D图形的绘制。
OpenGL,是一个跨平台的图形开发库。适用于2D和3D图形的绘制。

95、ffmpeg框架:ffmpeg 是音视频处理工具,既有音视频编码解码功能,又可以作为播放器使用。

4). 异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口;
4). 滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!
5). 减少子视图的层级关系
6). 尽量使所有的视图不透明化以及做切圆操作。
7). 不要动态的add 或者 remove 子控件。最好在初始化时就添加完,然后通过hidden来控制是否显示。
8). 使用调试工具分析问题。

97、如何实行cell的动态的行高

栈上的自动复制到堆上,block 的属性修饰符是 copy,循环引用的原理和解决方案。

主要是方法调用时如何查找缓存,如何找到方法,找不到方法时怎么转发,对象的内存布局。

100、什么是野指针、空指针?

野指针:不知道指向了哪里的指针叫野指针。即指针指向不确定,指针存的地址是一个垃圾值,未初始化。
空指针:不指向任何位置的指针叫空指针。即指针没有指向,指针存的地址是一个空地址,NULL。

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...

  • 把网上的一些结合自己面试时遇到的面试题总结了一下,以后有新的还会再加进来。 1. OC 的理解与特性 OC 作为一...

  • 冬月廿二 冬至 北方 某市 今年冬至气温异常的低,零下32°C,完全跌破本市的日均最低温。 一个穿着军大衣的男人走...

  • 今年离我高考已经过去两年了。 除了我自己考的那一年,我仍然每年都被虐。 不知道周围的人都是什么感觉,但是我就是想说...

  • 前提: 设定本次访谈的目的,要达到的效果,准备针对目的列好在访谈中要提的问题。 访谈准备: 1:找到产品的目标用户...

我要回帖

更多关于 二进制算术运算01010100+10010011 的文章

 

随机推荐