面试会问到的一些知识

客户端安全处理方式:
  • 网络数据传输的一些敏感数据(用户密码、消费数据等)不能明文发送,要进行加密(MD5)
  • 有时可能不用http协议,要自己定一些协议
  • 本地文件存储(游戏存档,要加密)
  • 源代码,要进行一些混淆
图片加载的比较慢如何处理,怎样优化程序性能
  • 图片下载放在异步线程
  • 图片下载过程中用占位图片
  • 如果图片特别大,考虑多线程断点下载
设计一个框架API时,需要考虑的问题
  • 针对你要实现的功能,接口是否符合功能的实现
  • 类名,方法名功能命名的清晰度
  • 方法供使用者调用时是否简单够用
  • 尽量少依赖其它框架
app需要加载超大量数据,给服务器发送请求,但是服务器卡住了怎么办
  • 设置请求超时
  • 给用户提示请求超时
  • 根据用户操作决定是否重新请求数据
NSNotification 在哪个线程中发送通知就在哪个线程中执行相应方法。

所以如果问是否可以把比较耗时的操作放在NSNotification中,要考虑此时是在主线程还是异步线程

Runloop的输入源和定时源

这里写图片描述

  • 每个线程都有一个runloop
  • runloop处理的事件有两种不同的来源,输入源和定时源
  • 输入源传递异步消息,通常来自于其他线程或者程序(比如其他线程完成操作回到主线程,处理线程间交互)。定时源传递同步消息,在特定时间或一定时间间隔发生(处理主线程时间UI刷新、事件)。
  • 输入源处理异步消息,定时源处理同步消息
网络处理过程中发现很卡
  • 检查网络请求操作是否被放在主线程
  • 查看异步请求的数量是否太多
  • 数据量是否太大,可以先清除掉一些不必要的数据(在didReceivedMemoryWarning里面清除看不见的文字及和图片)
  • CPU使用率和内存问题
怎么解决sqlite锁定的问题
造成sqlite锁定的情况

操作过于频繁,,比如一次性执行100000条语句(在一个for循环里)
两个线程同时访问数据库,比如买票卖票问题

如何解决
  • 设置数据库锁定的处理函数
    int sqlite3_busy_handler(sqlite3*, int ( * ) (void * , int ), void *);
  • 设定锁定时的等待时间
    int sqlite3_busy_timeout(sqlite3*, int ms);
在异步线程中下载很多图片失败了,如何处理,结合runloop谈谈解决方案
  • 重新下载图片
  • 下载完毕利用runloop回到主线程(performSelectorOnMainThread)刷新UIImage

    isa指针有什么用
    • 表明是属于什么类的
控制器生命周期
怎么封装view
怎么进行适配

分为系统适配和UI适配

推送服务

首先要有三方,手机、公司的服务器,苹果的APNS

手机要想APNS注册一个deviceToken,然后手机告诉公司服务器它的deviceToken,然后公司服务器告诉APNS要向某deviceToken发送推送,接着APNS根据该deviceToken发送推送。

内存管理的几条原则
  • 只要用alloc、new、copy创建一个新的对象,就要调用release或autorelease
  • 只要调用了retain,就要调用release或autorelease
  • @property参数里只要有copy或retain(ARC下strong)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值