李洪强iOS经典面试题153- 补充

李洪强iOS经典面试题153- 补充

 

补充

有空就来解决几个问题,已经懒癌晚期没救了。。。

UML

  • 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。在软件无线电系统的开发过程中,统一建模语言可以在整个设计周期中使用,帮助设计者缩短设计时间,减少改进的成本,使软硬件分割最优。
  • 用例图 静态图 行为图 交互图 实现图

如果设计一个交易平台,流程如下:A用户在平台P发现B用户有东西出售,P平台的业务逻辑是需要A先付款到P得中间账户,等到A确认收货后,P向B付款,你能尝试某种表示方式来让程序员,产品设计,美术设计明白这个流程么?

从1-n个五序列的数字中排序的算法有哪些,简单代码实现一个并写出时间复杂度

有一个6克和21克的砝码,怎样称量三次将420克的糖分成270克和150克

一桌子人,每个人额头上都贴有标签,绿色和红色,绿色至少1个,大家都能看到别人头上的标签,看不到自己头上的标签,然后开始闭眼游戏,大家觉得自己头上是绿色标签就拍一下手掌,第一次闭眼没人拍掌,第二次,第三次也同样没有人拍掌,第四次有一个人拍掌了,请问绿色标签有几张

是否使用过coreImage和coreText?如果使用过,说说你的体验

  • coreImage是IOS5中新加入的一个Objective-c的框架,提供了强大高效的图像处理功能,用来对基于像素的图像进行操作与分析。

    写一个单项链表逆序

什么是OpenGL?具体使用

开启一个其他线程来计算1+1 并且把结果用主线程显示在label上更新UI

ffmpeg框架

静态链接库

init和initwithobject区别(语法)?

什么是OOP?

为NSString扩展一个方法,方法能判断字符串是否是Url地址(即判断字符串是否以“http://”),放回BOOL值类型

写一个iphone程序,有2屏,可以通过滑动切换,第二屏有一个webview,读取本地的html文件,Html文件中会加载一个本地xml文件,获取xml文件中的数据内容并显示。(可选:html中加载的js文件)

.如何避免json解析出现内存泄露,内存泄露后怎么解决

什么情况下会发生内存泄漏和内存溢出?

有方法查看当前系统内存使用情况吗?

  • 静态分析 :通过静态分析我们可以最初步的了解到代码的一些不规范的地方或者是存在的内存泄漏,这是我们第一步对内存泄漏的检测。当然有一些警告并不是我们关心的可以略过。
  • 通过instruments来检查内存泄漏
    这个方法能粗略的定位我们在哪里发生了内存泄漏。方法是完成一个循环操作,如果内存增长为0就证明我们程序在该次循环操作中不存在内存泄漏,如果内存增长不为0那证明有可能存在内存泄漏,当然具体问题需要具体分析。
  • 代码测试内存泄漏
    在做这项工作之前我们要注意一下,在dealloc的方法中我们是否已经释放了该对象所拥有的所有对象。观察对象的生成和销毁是否配对。准确的说就是init(创建对象的方法)和dealloc是否会被成对触发(简单说来就是走一次创建对象就有走一次dealloc该对象)。
    下面是自己遇到的一些比较隐秘的造成内存泄漏的情况:
    1.两个对象互相拥有:也就是说对象a里面retain/addSubview了b对象,b对象同时也retain/addSubView了a对象。注意:delegate不要用retain属性,要用assign属性也会导致互相拥有。
    2.有时候需要用removeFromSuperView来释放:具体说明,也许我的a对象拥有一个b对象,b对象add到了c对象上,而在我们的设计中b对象的生命周期应该和a对象相同;这时候只一句[b release]/self.b = nil是不能把b对象释放掉的(一般情况下release会使其retainCount-1,[super dealloc]会再次将所有subView的retainCount-1,而b并不是a的subView,所有最后的一次-1没有了);所以我们需要在之前加上[b removeFromSuperView]。

写一个贪吃蛇的算法

请写一个类似于NSMutableArray的类,可以添加,删除,以及如何以最快的速度查找某个元素?

给一个数字,判断从左读和从右读是否是一致的?例如12321和4444

给一个数组[1、3、2、4、8]排序后[1、2、3、4、8]?

怎么用下面的类?北京品科艺科技有限公司

  • NSuserDefault
  • NSMange Object Context
  • NSPredict

    怎么从xib文件加载成UIview?

OAuth2.0授权的过程,是否用过1.0?

id是编译时还是运行时

蓝牙

、CFNetwork基于啥?

逻辑运算跟位运算的区别?

三维动画的旋转的原理?底层怎么实现?点与点 用距阵变换实现的。

NSFileManager/NSFileHandle为什么不用文件加载而用数据库?

uikit基于什么?

默写二分查找算法?

设计一个忽略大小写比较两个字符串的算法?

怎么过滤一段既有字符串又有数字的,让他只剩数字?

支付功能。微信支付 支付宝支付

友盟分享 报错

假设某一个生物每B年繁殖一次,一次繁殖N个只,寿命是M年,编写程序起初有X只生物,求T年之后生物的总数是多少?

=有个不相同的数,从中随机取N个数,要求N个数互不相同。

//(已经有随机函数int getRand(int min,int max)表示获取从最小值到最大值的随机整数)
{
return min + (max – min) *rand()/RAND_MAX;
}

什么是消息推送?

已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前

在iPhone中怎么写入C++程序,详细写下来

远程推送;本地消息和原地推送的区别

苹果怎么实现安全机制

  • 设备控制和保护:支持用户从一系列密码设计策略中根据安全需求来进行选择,包括超时设定、密码长度以及密码更新周期等

  • 数据保护。256位AES硬件加密算法。远程信息擦除,本地信息擦除

  • 安全网络通信,VPN SSL WAP/WAP2认证方式接入wifi

  • 安全的iOS平台。运行时保护-沙盒机制,应用之间不能相互访问,系统资源与用户程序隔离。强制前面。安全认证框架

    极光推送原理(第三方框架),怎么用的?遇到什么问题?怎么解决的?

    微信的附近功能怎么实现的?

    怎么实现第三方登陆

autolayout?sizeclass

HealthKit是什么?

2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据,这是苹果计划为其计算和移动软件推出的一系列新功能的一部分该移动应用平台被命名为“Healthkit ”,苹果高管告诉开发者,它可以整合iPhone或iPad上其它健康应用收集的数据,如血压和体重等。

HealthKit框架提供了一个结构,应用可以使用它来分享健康和健身数据。HealthKit管理从不同来源获得的数据,并根据用户的偏好设置,自动将不同来源的所有数据合并起来。应用还可以获取每个来源的原始数据,然后执行自己的数据合并。

HealthKit也可以直接与健康和健身设备一起工作。在iOS8.0中,系统可以自动将兼容的低功耗蓝牙心率仪的数据直接保存在
HealthKit存储中。如果有M7运动协处理器,系统还可以自动导入计步数据。其他的设备和数据源必须要有配套的应用才可以获取数据并保存在HealthKit中。

HealthKit另外提供了一个应用来帮助管理用户的健康数据。健康应用为用户展示HealthKit的数据。用户可以使用健康应用来查看、添加、删除或者管理其全部的健康和健身数据。用户还可以编辑每种数据类型的分享权限。

HealthKit和健康应用在iPad上都不可用。HealthKit框架不能用于应用扩展。

HomeKit是什么?

HomeKit,是苹果2014年发布的智能家居平台。HomeKit库是用来沟通和控制家庭自动化配件的,这些家庭自动化配件都支持苹果的HomeKit Accessory Protocol。HomeKit应用程序可让用户发现兼容配件并配置它们。用户可以创建一些action来控制智能配件(例如恒温或者光线强弱),对其进行分组,并且可以通过Siri触发。HomeKit对象被存储在用户iOS设备的数据库中,并且通过iCloud还可以同步到其他iOS设备。HomeKit支持远程访问智能配件,并支持多个用户设备和多个用户。HomeKit 还对用户的安全和隐私做了处理。

iCloud是什么包含了哪些技术与服务?

iCloud是苹果公司所提供的云端服务,2011年6月6日苹果公司执行长乔布斯(Steve Jobs)抱病主持全球开发者大会(WWDC),正式发表云端服务iCloud, iOS 5 以及 OS X Lion.其中iCloud的功能是存储内容,包括购买的音乐、应用、电子书等推送到所有设备,iCloud是一系列服务的技术封装,使用者可以免费储存5GB资料。可以备份存放照片、音乐、通讯录、短信、文档等内容,在你需要的时候以无线方式将他们推送到你所有的设备上。自行执行。轻松自如、运作流畅,它就是这么管用。可与亲朋好友共享体验的完整平台。它不仅安全,而且可提供丰富的社交体验,从任何计算机或设备均可随时方便地进行访问。iCloud上所提供的应用程序包括办公生产率、开发工具、媒体和窗口小部件等。随着时间的推移,还将通过易于使用的市场空间和应用程序开发工具箱提供范围更广的应用程序。

服务:应用软件、电子书与备份、Documents in the Cloud、Photo Stream(照片流)、iTunes Match、Mobile Me

CoreData:中多线程中处理大量数据同步时的操作

CoreData:是CoCoa中处理数据绑定数据的关键特性,提供完整的对象持久化存储方案。如果你使用sqlite3厌倦了敲打sql语句,CoreData正解决了你这烦恼。sqlite3是CoreData处理的数据类型之一,当你将CoreData和sqlite的结合起来使用的话,你将能开发出强大的数据库应用。

CoreData与多线程操作:

为了在查询数据的时候不让界面停滞,使用多线程是不可避免,一般我们会用thread,串行线程或者并发线程。coredata与多线程交互的时候,每个线程都必须拥有一个manager context对象,一般有两种方式:

1.每一个线程使用私有的manager context,共享一个 persistent store coordinator

2.每个线程使用私有的manager context和私有的persistent store coordinator

对于这两种方式,我们比较推荐使用第一钟方式,因为使用第二种方式的会消耗我们更多的内存,所以推荐使用第一种。 注意:CoreData里面还带有一个通知NSManagedObjectContextDidSaveNotification,主要监NSManagedObjectContext的数据是否改变,并合并数据改变到相应context

请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的 开发指南

Handoff英译是用手推开某人,在计算机领域是CDMA术语,表示切换的意思。OSX 10.10 Yosemite新增了一个酷炫的功能“HandOff”,打开这个功能之后,用户可以在Mac上对iPad和iPhone进行操作,比如能够编写iPhone上未完成的邮件,并且可以在Mac上打开iPhone的热点等等,Mac的Hand Off功能只能识别Mac周围的iPhone手机。

Handoff的核心思想就是:用户在一个应用里所做的任何操作都包含着一个activity,一个activity可以和一个特定用户的多台设备关联起来。用行话来说,抽象出这种activity的类叫做NSUserActivity,大部分时间我们都会和这个类打交道。需要一提的是,所有的设备都必须靠近(靠近是指两台设备的蓝牙能够彼此连接),这样Handoff才能正常工作。而且还有两个先决条件得满足:第一个条件是得有一个能正常使用的iCloud账号,而且用户应该在每台准备使用Handoff的设备上登陆这个iCloud账号。事实上,当在不同的设备上切换时,为了保证正在进行的activity不被中断而且被关联到同一个用户,应该尽可能地在所有设备上使用同一个iCloud账号。第二个条件是当两个或两个以上不同的应用想要在同一个用户activity进行Handoff的操作时需要具备的,在这种情况下,所有涉及到的应用必须使用Xcode里相同的团队标识(TeamID)签名。

当编写一个支持Handoff的应用时,需要关注以下三个交互事件:

1.为将在另一台设备上继续做的事创建一个新的用户activity。

2.当需要时,用新的数据更新已有的用户activity。

3.把一个用户activity传递到另一台设备。

需要注意的是Handoff相关的测试只能在真实设备上进行,所以你得有至少两台运行着iOS 8.0或以上系统的设备。不管是多台iPhone,多台iPad或者同时拥有iPhone和iPad都可以。

posted @ 2016-11-03 19:09  李洪强  阅读(603)  评论(0编辑  收藏  举报