微博面试问题总结

1 崩溃程序入口怎么找
loadAddress
Bugly如何知道此时已经崩溃了

2 bundle icon加载的时候是分段载入内存,那么具体载入多少

4 掉帧检测以及如何处理的

5 sdwebImageDownloader如何做的串行请求某个图片资源结束后再请求下一个
首先代码

6 谁发起的屏幕刷新操作 VSync

7 检测在子线程里做了UI操作 (待续)

原因及解决
这是Xcode 9以后的新特性:主线程检测器(Main Thread Checker);
1.检查代码
出现的时候意味着本来需要在主线程执行的代码(比如UI刷新),被放在了子线程里边执行,此时仔细检查代码,把在UI刷新误操作在子线程中的代码,回到主线程中!

Edit Sheme Run Diagnostics中的Main Thread Checker 运用Runtime API Checking

通过Runtime机制检测子线程操作UI

在网上查找了一些方法,程序运行的检测是否在子线程中操作了UI,大体的思路为,通过Objective-C的runtime机制,动态将自定义的方法替换掉系统原方法,在自定义方法中去判断当前是否为主线程,若不是则打印log,或直接让程序崩溃,以此定位出具体是哪行代码出现的问题。

8 mp3模拟信号转数字信号

录音过程
AVAudioSession

存储录音文件
设计录音格式
采样率
通道数
录音质量

AVAudioSessionCategoryPlayAndRecord 设置为播放和录音

苹果默认的录音格式为.caf转为mp3以便android和web都可以兼容

苹果caf转为mp3比如用到fopen()用“rb”“wb”方式读写文件与“r”“w”有什么不同
区别在于:rb,wb读写的是二进制文件(通常后缀名.dat),r,w读写的是文本(通常是后缀名.txt记事本)
r:打开一个文本文件只读
w:打开一个文本文件只写
a:对一个文本文件添加
rb:打开一个二进制文件只读
wb:打开一个二进制文件只写
ab:对一个二进制文件添加
r+:打开一个文本文件读/写
w+:生成一个文本文件读/写
a+:打开一个文本文件读/写
rb+:打开二进制文件读/写
wb+:生成二进制文件读/写
ab+:打开二进制文件读/写

1)文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

r(read): 读
w(write): 写
+: 读和写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件

fp=fopen("ima.dat","w")是什么意思啊???_ …… 已只写的方式打开ima.dat文件,如果该文件不存在,则建立一个 fopen是打开文件的函数 fopen("文件名","打开方式") r 打开只读文件,该文件必须存在. r+ 打开可读写的文件,该文件必须存在. rb+ 读写打开一个二进制文件,只允许

数字信号Digital Signal指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示,例如,字长为2位的二进制数可表示4种大小的数字信号,它们是00、01、10和11;若信号的变化范围在-1~1,则这4个二进制数可表示4段数字范围,即[-1, -0.5)、[-0.5, 0)、[0, 0.5)和[0.5, 1]。 由于数字信号是用两种物理状态来表示0和1的,故其抵抗材料本身干扰和环境干扰的能力都比模拟信号强很多;在现代技术的信号处理中,数字信号发挥的作用越来越大,几乎复杂的信号处理都离不开数字信号;或者说,只要能把解决问题的方法用数学公式表示,就能用计算机来处理代表物理量的数字信号 简介 在数字电路中,由于数字信号只有0、1两个状态,它的值是通过中央值来判断的,在中央值以下规定为0,以上规定为1,所以即使混人了其他干扰信号,只要干扰信号的值不超过闽值范围,就可以再现出原来的信号。即使因干扰信号的值超过阂值范围而出现了误码,只要采用一定的编码技术,也很容易将出错的信号检测出来并加以纠正因此,与模拟信号(模拟 Analogy)相比,数字信号在传输过程中具有更高的抗干扰能力,更远的传输距离,且失真幅度小 数字信号在传输过程中不仅具有较高的抗干扰性,还可以通过压缩,占用较少的带宽,实现在相同的带宽内传输更多、更高音频、视频等数字信号的效果。此外,数字信号还可用半导体存储器来存储,并可直接用于计算机处理。若将电话、传真、电视所处理的音频、文本、视频等数据及其他各种不同形式的信号都转换成数字脉冲来传输,还有利于组成统一的通信网,实现今天rr界人士和电信工业者们极力推崇的综合业务数字网络(IS-DN).从而为人们提供全新的,更灵活、更方便的服务。正因为数字信号具有上述突出的优点,它正在迅速而且已经取得了十分广泛的应用 从原始信号转换到数字信号一般要经地抽样、量化和编码这样三个过程。抽样是指每隔一小段时间,取原始信号的一个值。间隔时间越短,单位时间内取的样值也越多,这样取出的一组样值也就越接近原来的信号。抽样以后要进行量化,正如我们常常把成绩80100分以上归为优,6079分归为及格,60分以下归为不及格一样,量化就是把取出的各种各样的样值仅用我们指定的若干个值来表示。在上面的成绩“量化”中,我们就是把0~100分仅用三个度“优”、“及格”、“不及格”来量化。最后就是编码,把量化后的值分别编成仅由0和1这两个数字组成的序列,由脉冲信号发生器生成相应的数字信号。这样就可以用数字信号进行传送了 数字信号的优点很多,首先是它抗干扰的能力特别强,它不但可以用于通讯技术,而且还可以用于信息处理技术,时髦的高保真音响、高清晰度电视、VCD、DVD激光机都采用了数字信号处理技术。其次,我们使用的电子计算机都是数字的,它们处理的信号本来就是数字信号。在通讯上使用了数字信号,就可以很方便地将计算机与通讯结合起来,将计算机处理信息的优势用于通讯事业。如电话通讯中采用了程控数字交换机,用计算机来代替接线员的工作,不仅接线迅速准确,而且占地小、效率高,省去不少人工和设备,使电话通讯产生了一个质的飞跃。再次,数字信号便于存储,现在流行的CD、MP3唱盘,VCD、DVD视盘及电脑光盘都是用数字信号来存储的信息。此外,数字通信还可以兼容电话、电报、数据和图像等多类信息的传送,能在同一条线路上传送电话、有线电视、多媒体等多种信息。数字信号还便于加密和纠错,具有较强的保密性和可靠性 模拟信号 模拟信号是指信息参数在给定范围内表现为连续的信号。 或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。 模拟信号是指用连续变化的物理量所表达的信息,如温度、湿度、压力、长度、电流、电压等等,我们通常又把模拟信号称为连续信号,它在一定的时间范围内可以有无限多个不同的取值。而数字信号是指在取值上是离散的、不连续的信号[1]  。 实际生产生活中的各种物理量,如摄相机摄下的图像、录音机录下的声音、车间控制室所记录的压力、流t、转速、湿度等等都是模拟信号。数字信号是在模拟信号的基础上经过采样、量化和编码而形成的。具体地说,采样就是把输入的模拟信号按.适当的时间间隔得到各个时刻的样本值.量化是把经采样测得的各个时刻的值用二进码制来表示,编码则是把t化生成的二进制数排列在一起形成顺序脉冲序列 模拟信号传输过程中,先把信息信号转换成几乎“一模一样”的波动电信号(因此叫“模拟”),再通过有线或无线的方式传输出去,电信号被接收下来后,通过接收设备还原成信息信号 近百年以来,无论是有线相连的电话,还是无线发送的广播电视,很长的时间内都是用模拟信号来传递信号的。照说模拟信号同原来的信号在波形上几乎“一模一样”,似乎应该达到很好的传播效果,然而事实恰恰相反,过去我们打电话时常常遇到听不清、杂音大的现象;广播电台播出的交响乐,听起来同在现场听乐队演奏相比总有较大的欠缺;电视图像上也时有雪花点闪烁。这是因为信号在传输过程中要经过许多的处理和转送,这些设备难免要产生一些噪音和干扰;此外,如果是有线传输,线路附近的电气设备也要产生电磁干扰;如果是无线传送,则更加“开放”,空中的各种干扰根本无法抗拒。这些干扰很容易引起信号失真,也会带来一些噪声。这些失真和附加的噪声,还会随着传送的距离的增加而积累起来,严重影响通讯质量。对此,人们想了许多办法。一种是采取各种措施来抗干扰,如提高信息处理设备的质量,尽量减少它产生噪音;又如给传输线加上屏蔽;再如采用调频载波来代替调幅载波等。但是,这些办法都不能从根本上解决干扰的问题。另一种办法是设法除去信号中的噪声,把失真的信号恢复过来,但是,对于模拟信号来说,由于无法从已失真的信号较准确地推知出原来不失真的信号,因此这种办法很难有效,有的甚至越弄越糟 主要是与离散的数字信号相对的连续的信号。模拟信号分布于自然界的各个角落,如气温的变化,而数字信号是人为的抽象出来的在幅度取值上不连续的信号。电学上的模拟信号主要是指幅度和相位都连续的电信号,此信号可以被模拟电路进行各种运算,如放大,相加,相 乘等。 模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,广播的声音信号,电视的图像信号等。 (1)模拟信号与数字信号 不同的数据必须转换为相应的信号才能进行传输:模拟数据(模拟量)一般采用模拟信号(Analog Signal),例如用一系列连续变化的电磁波(如无线电与电视广播中的电磁波),或电压信号(如电话传输中的音频电压信号)来表示;数字数据(数字量)则采用数字信号(Digital Signal),例如用一系列断续变化的电压脉冲(如我们可用恒定的正电压表示二进制数1,用恒定的负电压表示二进制数0),或光脉冲来表示。 当模拟信号采用连续变化的电磁波来表示时,电磁波本身既是信号载体,同时作为传输介质;而当模拟信号采用连续变化的信号电压来表示时,它一般通过传统的模拟信号传输线路(例如电话网、有线电视网)来传输。 当数字信号采用断续变化的电压或光脉冲来表示时,一般则需要用双绞线、电缆或光纤介质将通信双方连接起来,才能将信号从一个节点传到另一个节点。 (2)模拟信号与数字信号之间的相互转换 模拟信号和数字信号之间可以相互转换:模拟信号一般通过PCM脉码调制(Pulse Code Modulation)方法量化为数字信号,即让模拟信号的不同幅度分别对应不同的二进制值,例如采用8位编码可将模拟信号量化为2^8=256个量级,实用中常采取24位或30位编码;数字信号一般通过对载波进行移相(Phase Shift)的方法转换为模拟信号。计算机、计算机局域网与城域网中均使用二进制数字信号,21世纪在计算机广域网中实际传送的则既有二进制数字信号,也有由数字信号转换而得的模拟信号。但是更具应用发展前景的是数字信号。 这是个热点,很重要 DA AD转换一直是很重要的课题,哪怕只是会应用一个芯片,也可以说是相当厉害 关于保真问题,当然一直认为模拟信号在固定储存的时候有优势,但是对于数字信息来说,一旦已经采样了那么模拟信号储存的优势就不存在了 而数字信号在长途传输的优势又决定了在无线网络时代一定是主流

隔空投送
无线通信方案,有三种方案可以实施:
1、NFC 2、蓝牙 3、WIFI
下面是对这三个知识点做的一个总结,参照对比可以选择合适的方案。而本章着重讲的蓝牙之间通信
首先介绍一下蓝牙的两个广播Receiver。
第一个:蓝牙状态的改变是通过广播接收到的。
第二个:蓝牙搜索到设备、绑定设备(配对)也是通过广播接收的。(搜索到设备系统会自动发一个广播)注册查找设备,绑定状态
左为客户端Socket连接的一个流程:首先获取一个客户端Socket(),然后连接上,就可以读取数据和发送数据了。

右为服务端Socket操作流程:

蓝牙通信原理介绍:
蓝牙通信和socket通信原理基本上是一致的
蓝牙客户端Socket的与Sokcet流程是一样的,只不过参数不同而已。如下:
1、创建客户端蓝牙Sokcet
2、创建连接
3、读写数据
4、关闭

服务端socket:
1、创建服务端蓝牙Socket
2、绑定端口号(蓝牙忽略)
3、创建监听listen(蓝牙忽略, 蓝牙没有此监听,而是通过whlie(true)死循环来一直监听的)
4、通过accept(),如果有客户端连接,会创建一个新的Socket,体现出并发性,可以同时与多个socket通讯)
5、读写数据
6、关闭

共同通信处理

客户端和服务端 处理 发送数据 和获取数据

僵尸对象:已经被释放掉的对象,访问已经释放的对象,指针指向的内存块为无权访问
野指针: 对象释放后指针未置空导致的野指针
给野指针指向的内存填写不可访问的数据,让随机的crash变成必现的crash
Enable Scribble 在对象申请内存后填上0xaa,内存释放后在释放的内存填0x55
如果内存未被初始化就被访问,或者释放后被访问,Crash必现

内存泄漏:没有释放到不再引用对象的内存 (Analyzer静态分析)
MLeaksFinder
实现:为基类 NSObject 添加一个方法 -willDealloc 方法,利用weak指针指向自己,并在一小段时间(3秒)后,再次检测该weak指针是否有效,有效则内存泄漏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值