您的位置:首页 > 职场人生

面试相关知识点(一)

2016-03-01 20:50 393 查看
网络

1,数据库
增删改查, 它们之间的特性共性 ,封装的时候会先继承一个基类,然后各自封装一个类,留接口,后期需要修改的时候,改对应的类即可;
有时候展示的时候需要对请求成功后返回到 数据按照特定的条件来进行一个排序,然后进行需要的展示

跟数据库后台的互动,沟通的时候,返回的数据类型跟后台沟通成彼此最好的模式,比如字典或者数组,按需求的数据来分. 具体的按实际情况来区分

注意每次网络请求后(网络请求就是跟后台即数据库的互动),需要对请求的数据进行打印,看看返回的数据是什么类型,如果很复杂或者没必要,就需要跟后台沟通 跟后台沟通,
前提需要了解 什么时候需要返回 数组数据,什么时候需要返回字典数据

NSURLSession

2,框架 不懂的话也可以扯到代理 MVC 等 只是设计模式

光回答UI框架,问题应该问的是应用框架, 比如项目如何做功能划分,数据是如何流动的,比如本地的缓存方案是什么?网络请求方案是什么?一个网络请求如何判断用户是否登录,网络是否连通,客户端是否用的wifi?你的框架是否合理,可扩展性怎样?可维护性怎样?可测试性?光聊些设计模式是不够的,强烈建议看今年的WWDC关于advanced NSOperation的视频,所有的逻辑都被封装成一个Operation,设定dependecy(依赖)作为条件,然后人道queue队列里面执行,好处是不同界面中对相同逻辑的复用,每个操作也可以单独拿出来测试,同时很容易把操作发送到不同的线程,异步处理逻辑也很好.
也可以看看Facebook 的flux思路,数据始终单项流动,所有的action都通过dispatcher派发.也是很好的架构

整个app框架 构建 一般到大公司去有人做了涉及不到
小公司需要一个人做的时候才接触到

tabbar navigation导航条 viewcontorller 控制器之间 的互相配合 之间的关系
指针之间的关系

** 1> 2012年的时候 是仿照window phone 系统的框架(navigation导航条为主 button跳转到tabbar或者直接跳viewcontroller控制器)
** 2> 现在很多是 入口是tabbar控制器 然后跳到navigationController或者viewcontroller
** 3> Q盛行的时候 很多侧滑效果的框架结构 抽屉等
框架都有第三方,code4app就有,直接下载,需要能看懂别人代码和修改成自己需要的功能程度

3,第三方库
AFNetworking 底层是怎么实现的 可能公司会考虑版本的问题,会让程序员自己封装网络请求的类即接口,有GET/POST/等,也是增删改查 跟数据库类似,需要了解共性还有特性 继承基类,各自封装
ASI和SBJson的搭配 了解 代表你有工作经验(吹牛逼用的)
cordata 封装

coding 的iOS端feng'zhuang封装ARC下的网络请求

现在都快不用connection网络请求了,所以需要了解最新的网络请求

4,缓存机制

缓存每次网络请求之前,判断一下本地是否有数据,数据是否过期,请求是否超时等情况,优先从本地读取,没有再网络请求服务器,从数据库取,取出来首先还是存到本地,或者存到服务器特定地方,看需求.业务逻辑问题.

sdwebimage只是针对图片的缓存,还有一些别的如文章(数据),音视频等的缓存,信息,等等

5,内存管理 oc 把这些都理解好了 能忽悠住人了以后 要工资的时候要悠着点 别超过15000,最多18000;

oc里面的核心 runtime 运行机制

自动释放池 原理
管理原则 不要说retain release基本的

alloc 和new开头的方法都会开辟新的空间,就需要进行release操作 即自动释放池

6,kvc,kvo 深入的理解

Kvc赋值的内部原理,一般在给模型赋值的时候都会给模型建一个基类,里面只写一个方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
减少代码量,提高代码质量

kvo 观察者 观察者在监听到被监听的对象状态的改变的 时候会调用的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

深刻调用 为什么要用观察者模式

7,ios9新的特性, xcode7的特性,对我们app的影响

8,svn怎么用,出现冲突怎么解决

9,封装性,提高代码质量,高内聚,低耦合.

试着,封装网络请求,封装一个基类把共有的方法或者属性都提取出来,然后创建继承它的子类,分别对增删改查的方法留对应的接口(方法),这样外部调用的时候直接导入对应的增删改查的类即可调用对应的方法,不必导入整个大文件(没有封装的即把四个或者更多的方法放在一个文件里面,这样需要修改的时候就很麻烦)

封装:什么情况下需要封装,一般设计模式最好的有MVC模式,
比如 在View部分就需要尽量的进行封装,把view自己内部的控件,需要的模型数据,甚至创建方式,都封装屏蔽起来,留出对应的接口(即方法),让外部使用这个view的时候,直接调用接口,传需要展示的内容,view自己内部进行加载,赋值,等操作,最终返回一个控制器需要的view ,控制器来进行展示.
比如,模型类Model,进行封装,就是创建一个基类,只调用一个方法,
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
其他的继承,创建自己需要的模型 ( *** 有歧义,再思考思考 ***)

10,tableview的原理 和scrollview的链接 为什么tableview可以直接显示数据内容,原理是什么 跟cell有关 复用机制深刻理解

11,去公司以后,为了了解整个app产品的流程,
拿到项目第一 看网络请求部分 用到的三方库 整体框架是什么 从网络请求入手 然后看处理数据的来龙去脉
比如 请求到数据后 一般是解析给模型数据存起来 或者 直接展示 看数据用在什么地方 各种数据的切换

最重要的是 看网络请求到的数据 是怎么展示的 比如 view controller 的view直接展示?或者 tableview展示?huo'zh或者scrollview展示?或者直接uiimageview展示,或者unbutton展示? 那种方式

具体实施 需要从各种项目中去锻炼 比如 下载开源的应用代码 跟做英语快速阅读一样的训练

最终目的是 一拿到应用就知道这个功能怎么实现,需要的数据类型,怎么处理数据,进行展示

12. ,pch文件的使用 不自动生成了,自己可以创建
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: