copy面试合集(三)总结

154 阅读4分钟

前言

前两篇的的面试合集你们还满意吗?这是总结了最后一片面试文章,有人私我叫我多写些面试题,白嫖吗哈哈,后续会更新些开发教程,想要一些大厂的面试题,直接找我拿吧!恭候佳音。

主题:

这是网上的一个网友的去面试的iOS工作的面试题。可以说都是些没营养的,但是面试题都是一些套路吧

image.png

image.pngOC中的分类与扩展有何区别?

比如extension就好比私有的category 我在网上搜到的一个扩展的知识,主要了解category的编译过程(美团技术出品)链接:深入理解Objective-C:Category

iOS开发中争议!添加成员的变量方法。

我用了category,但是想要给我这个类增加几个属性(成员变量),有的说用runtime。分享一个demo的截图:

2345_image_file_copy_1.jpg

注解:,可以看出此图中,有一个PbPlatMainController,添加了一个category,名称叫PbPlatModulMgrImpl,里边有有几个属性叫registerDict,optionalModule...

category是无法增加成员变量(属性)的,所以说我利用了Runtime这个

给你们分享下工厂模式---Factory Method

image.png

简述MVVM和MVC的优点

mvc

MVC是一种架构模式,M表示Model,v表示视图view,c表示控制器controller

1 M 用来负责存储,定义,操作数据 2 V 用来展示输给用户,与用户进行操作交互 3 controller是model与view的协调者,Controller把Model中的数据拿过来给View用。Controller可以直接与Model和View进行通信,而View不能和Controller直接通信。View与Controller通信需要利用代理协议的方式,当有数据更新时,Model也要与Controller进行通信,这个时候就要用Notification和KVO,这个方式就像一个广播一样,Model发信号,Controller设置监听接受信号,当有数据更新时就发信号给Controller,Model和View不能直接进行通信,这样会违背MVC设计模式。

MVVM

  • ViewModel层,就是View和Model层的粘合剂,他是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样的代码的极好的地方。说白了,就是把原来ViewController层的业务逻辑和页面逻辑等剥离出来放到ViewModel层。

  • View层,就是ViewController层,他的任务就是从ViewModel层获取数据,然后显示。指针与数组名的关系?

image.png

[](【点击】更多大厂的资料分享 docs.qq.com/doc/DZXpKSU…)

以下属性在MRC中的赋值方法

@property(nonatomic, copy)NSString *name;

指针与数组名的关系?

**int arrayName[4] = {10, 20, 30, 40}; int *p = (int *)(&arrayName + 1); NSLog(@"%d", (&arrayName - 1)); 1.(&arrayName + 1):&arrayName是数组的地址(等价于指向arrayName数组的指针) 2.增加 1 会往后移动16个字节,开始是4个字节的位置,移动后就是16个字节后面的位置(也就是目前位置是20个字节) 3.最后又赋值给,int类型的指针p(int类型占4个字节) 4.所以(p - 1)就是减去4个字节,变成为16个字节的位置,输出的(p - 1)值为40 int *p = (int *)(&arrayName + 1); NSLog(@"%d", *(p - 1));//输出结果为 40


** #import 和#include有 么区别?@class呢?#import <>和 #import"" 有 么区别?**

import是OC导入头文件的关键字,#include是C/C++导入头文件的关键字 使用#import只导入一次不会重复导入,相当于#include和#pragma once;(使用#include可能会出现循环引用,使用#pragma once消除这种可能) @class一般用于声明某个字符串作为类名使用,它只是声明了一个类名,没有导入.h文件中的内容,不会引起交叉编译问题 import< >代表导入系统自带的框架 import" "代表导入我们自己创建的文件,导入的使我们.h文件,也就是头文件

可能有点杂,这些资料素材应该是可以在薪资方面涨个7k左右

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

2 MVC 和 MVVM 的区别?

3 frame 和 bounds 有什么不同?

4 iOS 你在项目中用过 GCD 吗?举个例子

5 用伪代码写一个线程安全的单例模式

6 Object-C有私有方法吗?私有变量呢?

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

8 category 和 extension 的区别

9 tableView的重用机制?

10 写出使用GCD方式从子线程回到主线程的方法代码

11 写出使用GCD方式从子线程回到主线程的方法代码

本篇文章到这里就结束了。觉得好看的可以点个赞,想更多大厂的面试资料的添加我哦

每次我都会放我自己哔哩哔哩的 链接在下方,可以去看看视频。最近没有发视频,我在整理合集中,感谢关注!

[iOS逻辑沐沐的个人空间_哔哩哔哩_Bilibili](url)