美文网首页
iOS 面试题1

iOS 面试题1

作者: vicki753 | 来源:发表于2017-11-06 13:02 被阅读23次

一、请填写BOOL、float、指针变量 与 “零值”比较的if 语句:

二、用变量a给出下面的定义

a) 一个指向整数的指针 

b)一个指向指针的指针,它指向的指针是指向一个整型数 

c) 一个指向有10个整型数数组的指针 

三、 以下为Windows NT 下的32位 C++程序,请计算 sizeof  的值

char str[] = "Hello";

char *p = str;

int  n = 10;

请计算: sizeof(str) =     sizeof(p) =    sizeof (n) = 

四、简答题

1、介绍内存的几大区域

2、用预处理指令 #define 声明一个常数,用以表明一年中有多少秒

3、请简述以下两个for循环的优缺点

第一种:

for (i = 0 ; i < N ; i++ ){

    if (condition)

         DoSomething();

    else

         DoOtherthing();

}

第二种:

if (condition){

     for (i = 0; i < N ; i++)

         DoSomething();

}else {

      for (i = 0; i < N ; i++)

         DoOtherthing()

}

4、 对于属性NSString *title  用重新变法实现synthesized 方法即实现自己的getter 和setter方法

5、怎么防止别人反编译你的app?

6、我们说的objective-c是动态运行时语言是什么意思?

7、开发中回调有三种方式: delegate 、 notification、target-action 介绍一下这三种方式,并说明它们之间的不同

8、使用GCD 如何实现这个需求, A\B\C三个任务并发,完成后执行任务D

9、在swift 中变量类型后面添加问号? 和感叹号 ! 代表什么?

五、 有关内存的思考题

第一种

void GetMemery2(char **p , int num){

*p = (char *) malloc (num);

}

void Test (void){

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello"); 

printf(str);

}

请问运行Test 函数会有什么样的结果?

第二种

char *GetMemory(void){

char p [] = "hello world";

return p;

}

void Test(void){

char *str = NULL ;

str = GetMemory();

printf(str);

}

请问运行Test 函数会有什么样的结果

六、使用objective-c编程实现排序算法中的快速排序

七、口头的问题:SDWebImage 框架,内部的实现是这样的?

八、口头问题:多线程有几种方式,GCD有哪几种方法

九、口头问题:tableView的优化处理

十、口头问题:事件响应链,比如一个按钮的点击

十一、口头问题:介绍keyWindow

十二、口头问题:有用过映射嘛?


后续添加答案,有答案的小伙伴请在下面评论作为参考哦!


一、

Bool a ; if (a){ // 代表true  }else{  // 代表false }

嗯,这个 float 比较复杂了,零值:接近 0.000001(----需要细究

指针就是  if(a){ // 这样就表示是否存在了~  } //  反正不能写nil, 也不能写NULL ;  //  此时面试官已经对我很崩溃了~~

二、

int *a

int **a

int * a[10]

三、在32位中,int 类型都是4字节,一个指针都是4个字节

sizeof(str) = 6

sizeof(p) = 4

sizeof(n) = 4

int 类型16位是2个字节,64位是8个字节

四、(参考地址

1、介绍下内存的几大区域?

内存分配方式:

【1】静态存储区域分配,内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在、例如全局变量,static 变量;

【2】、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限

【3】、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存(Objective-C是 release),动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,频繁地分配和释放不同大小的堆空间将会产生堆碎块。

2、程序的内存空间

一个由C/C++编译的程序占用的内存分为以下几个部分,

【1】、栈区  (stack) -  由编译器自动分配释放,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等,其操作方式类似于数据结构中的栈。

【2】、堆区(heap)- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。

【3】、全局区(静态区static)- 存放全局变量、静态数据、常量。程序结束后由系统释放。

【4】、文字常量区-常量字符串就是放在这里的,程序结束后由系统释放。

【5】、程序代码区-存放函数体(类成员函数和全局函数) 的二进制代码

总的来说有这几种:内存区域有栈、堆、文字常量区、静态存储区、代码区

2、用预指令表示一年有多少秒

 #define  (365 *  24 * 60 * 60)UL

define 不能以分号结束,括号的使用

这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型。

如果你在你的表达式中用到UL(表示无符号长整型)。

3、两个for 循环一个是在循环中判断,一个是判断后循环,第一个在循环中判断是打断执行,消耗性能;

4、对于NSString * title需要写getter和setter方法:

-(void)setTitle:(NSString *)title{

_title = [title copy];

[title release];

}

5、怎么防止别人反编译你的app ?

首先知道他们如何反编译你的app:

【1】、插件法(仅越狱),iTools工具替换文件法(常见为文档破解),八门神器修改。

【2】、网络安全风险:截获网络请求破解通信协议并模拟客户端登录,伪造用户行为,对用户数据造成危害。

【3】、应用程序函数PATCH破解,利用FLEX补丁软件通过派遣返回值来对应进行patch破解。

【4】、源代码安全风险,通过使用ida等反汇编工具对ipa进行逆向汇编代码,导致核心代码逻辑泄露与被修改,影响应用安全。

以下的加密技术:

【1】、对NSUserDefaults , sqlite文件数据加密,保护账号和关键信息;

【2】、URL 编码加密,对程序中出现的URL进行编码加密,防止URL被静态分析。

【3】、对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取数据

【4】、对应用程序的方法名和方法体进行混淆,保证源代码被逆向后无法解析代码

【5】、对应用程序逻辑结构进行打乱,保证源代码可读性降到最低。

6、我们说Objective-c是动态运行时语言是什么意思?

解:因为objective-c 的标志性特性就是它的消息机制,(知乎上的“不二乎”)的答案似乎比较好,虽然也有网友(知乎上的“冯东”)说到真正的原理 ,runtime的使用了多少 bookkeeping数据,但是面试官比较喜欢听到的是这样的吧:

1、类和对象都是 id, 在给你一个id的前提下,无法直观的知道这个对象是类对象还说类本身,简单的可以简化成runtime管理的都是id,(id 的本质其实是objc_object, objc_class头部其实就是id, 也就是isa).

2、Class在objc中是动态创建的,selector, method ,imp, protocol都是随后绑定上去的,(即所谓的运行时绑定)

3、通过runtime能够查出当前运行时的环境中所有的类,每个类中的方法,每个类消息的绑定,每个类的实现协议,每个协议的定义,每个类当前消息换成等一切你想知道的东西。

4、类的方法(消息)调用是间接的。

相关文章

  • iOS 面试题及答案

    面试题集锦 iOS面试题及答案1iOS面试题及答案2iOS进阶面试题及答案3 一. CoreAnimation 相...

  • IOS面试(2018)

    经典面试题 非技术面试题 C面试题1 C面试题2 C面试题3 iOS笔试题01 iOS笔试题02 iOS笔试题03...

  • ios-面试题链接(四)

    经典面试题 非技术面试题 C面试题1 C面试题2 C面试题3 iOS笔试题01 iOS笔试题02 iOS笔试题03...

  • 2018 iOS面试题系列

    经典面试题 非技术面试题 C面试题1 C面试题2 C面试题3 iOS笔试题01 iOS笔试题02 iOS笔试题03...

  • 2020年,精选大厂的iOS面试题总结(一)

    iOS面试题目录(一) 精选大厂的iOS面试题总结(一)精选大厂的iOS面试题总结(二) 1. iOS内存管理机制...

  • 面试题汇总

    ? 1. 基础 细说@property iOS基础面试题1(5.16) iOS基础面试题2 (5.24) 标哥(黄...

  • iOS最新面试题汇总(四)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(三)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(一)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(二)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

网友评论

      本文标题:iOS 面试题1

      本文链接:https://www.haomeiwen.com/subject/vxghmxtx.html