2020秋招猫眼iOS

一面:

  •  
  • 为什么从图像转到开发?

不足:“图像大多数是调参”不妥

改进:图像的一部分网络结构的设计和调参,带给自己的成就感不如开发大,开发可以接触到很多计算机的基础知识,我的一个想法是在工作之余,不断温习这些基础课,探究计算机的历史。

  • 项目介绍

不足:语言凝练,提前多练习

1.头和实现分离 -> shopkit的机制介绍

 

deeplinking是做什么的:网页链接是无法打开原生应用的,如果一个用户访问你的网页中的某一个资源,他的手机上面也已经安装了你的应用,那么,我们要如何让系统自动的打开应用,然后在应用中展示用户所访问的那一个页面中的资源?这就是深度链接需要解决的问题。

更好的引出app crash问题以及条理的说出解决步骤

基础

  • OC面向过程、面向对象

面向过程
  优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。

  缺点:没有面向对象易维护、易复用、易扩展

面向对象
  优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
  缺点:性能比面向过程低

  • const关键字
  • static关键字

全局变量、文件域的静态变量和类的静态成员变量在main执行之前的静态初始化过程中分配内存并初始化;局部静态变量(一般为函数内的静态变量)在第一次使用时分配内存并初始化。这里的变量包含内置数据类型和自定义类型的对象。

  • 指针和引用

 

  • OC析构函数
  • 属性中与内存管理相关的关键字

strong表示指向并拥有该对象。其修饰的对象引用计数会增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其设为nil可以销毁它。内存地址保持不变,只是生成了一个新的指针,新指针和引用对象的指针指向同一个内存地址,没有生成新的对象,只是多了一个指向该对象的指针。

weak表示指向但不拥有该对象。其修饰的对象引用计数不会增加。无需手动设置,该对象会自行在内存中销毁。

assign用于非指针变量。其修饰的对象引用计数不会增加。被assign修饰的对象在释放后,指针的地址还是存在的,也就是说指针并没有被置为nil,成为野指针。

copy用来修饰block,因为block需要从栈区copy到堆区。和strong相同点在于都是属于强引用,都会是属性的计数加一,但是copy和strong不同点在于,它所修饰的属性当引用一个属性值时,是内存拷贝(深拷贝),就是在引用是,会生成一个新的内存地址和指针地址来,和引用对象完全没有相同点,因此它不会因为引用属性的变更而改变。

  • oc开发场景 内存泄漏
  • 内存溢出
  • 哈希表及哈希冲突解决算法(开放定址法、再哈希法、链地址法、建立公共溢出区https://zhuanlan.zhihu.com/p/29520044)
  • 介绍排序算法及优缺点(https://blog.csdn.net/pange1991/article/details/85460755)

OS:

线程与进程的定义、区别、用途

串行与并行

多线程需要注意什么问题:访问临界资源时需要考虑同步互斥问题;(解决方法:互斥锁、延迟执行、单例模式)

C++锁有多种:互斥锁、条件锁、自旋锁、递归锁、读写锁

进程间通信:匿名管道、有名管道、信号、消息队列、共享内存、信号量

计网:

http和https的区别:传输安全性、证书颁发机构花费一定费用、响应速度、端口号、消耗资源。 https://www.runoob.com/w3cnote/http-vs-https.html

对称加密和非对称加密的区别:加解密速度、安全。https://zhuanlan.zhihu.com/p/34732244

OC:

view 生命周期:2020秋招猫眼iOS_第1张图片

https://www.jianshu.com/p/42eb5a930d66

单例

观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。Notification、KVO 

智力思维题

圆桌放硬币,答案:先手放中间。

代码:

求阶乘

 

你可能感兴趣的:(面试记录)