笔试、面试题

1.算法题

(1).请在1000万个整型数据中以最快的速度找出其中最大的1000个数?

这是一个经常被问到的问题,百度网上解法也很多。

这里仅提供基本思路,供参考:把1000万的整型平均分到合适n个文件中,分别对每一份文件找出前1000个最大的数,最后对每份文件前1000数据用常规算法合并即可。

那么,如何从每一份文件中找出前1000个最大的数呢?

先取文件中前1000个数放到数组中,并排好序(假设升序),之后从文件中读取下一个数与数组第一个数比较,如果比数组中第一个数大,则替换数组第一个数,并重新排序,之后再取下一个数进行下轮比较即可。

(2) .循环链表题:一个有序循的整形环链表断开了,请插入一个整形数,使得链表仍然是有序的。

解题思路:请百度……哈哈。

2. OC题

(1).Block中可以修改全局变量,全局静态变量,局部静态变量吗?

答案,可以。 原因请参考深入研究Block捕获外部变量和__block实现原理

(2)代码分析题,以下代码输出结果是什么?

@property (nonatomic, strong) NSString *strongString;
@property (nonatomic, weak)   NSString *weakString;strongString =  [NSString stringWithFormat:@"%@",@"string1"];
weakString =  strongString;
strongString = nil;NSLog(@"%@", weakString);

答案: string1,原因:@"string1" 初始化 retainCount == 1; strongString 指向@"string1"对象, retainCount +1,strongString = nil, retainCount -1,最后retainCount == 1,所以输出是string1。

抱歉,此题之前给的方向有误。

感谢@Mr_Wei,@毵毵肆肆 iOS 两位大佬提供的解题思路。 答案输出结果仍然是string1,具体请参考两位大佬的评论,谢谢。

(3)SDWebImage实现原理是什么? 它是如何解决tableView的复用时出现图片错乱问题的呢?

答案:原理请参考iOS开发之SDWebImage原理,解决tableView复用错乱问题:每次都会调UIImageView+WebCache文件中的 [self sd_cancelCurrentImageLoad];

(4)iOS事件响应链机制是什么?

答案:iOS 事件响应链

(5)如图view上有横向排列label1 和 label2, label1,label2间距固定,内容动态变化。 请使用AutoLayout建立约束,保证label2内容要完全显示,label1内容自适应?

答案:请参考iOS AutoLayout使用技巧

(5)对runtime和runloop了解吗?

5.1 runtime:又称运行时,是一套底层的C语言API。 runtime应用场景:

a.字典模型自动转化(MJExtension,YYModel)

b.系统方法交互(Swizzle黑魔法)

c.万能控制器跳转(通过推送传过来控制器名称,属性等)

d.给分类(category)添加属性(实现setter、getter方法)

e.实现自动归档和解归档(原理与a类似)

5.2 runloop: 从字面上讲就是一个运行循环,内部是do-while循环,在这个循环内部处理各种任务。 一个线程对应一个runloop,主线程的循环默认启动,子线程的runloop得手动启动(调用run方法)。 runloop只能选择一个Model启动,如果当前Model中没有任务Source(Source0, Source1)、Timer,那么就直接退出runloop. runloop的作用:保持程序持续运行,处理App中各种事件。通过runloop,有事情运行,没事休息,可以节省Cpu资源,提高程序性能。

runloop应用: a.

想更深入了解runloop,请看大牛博客深入理解RunLoop。

或者看这个视频iOS线下分享《RunLoop》by 孙源@sunnyxx

3. Swift题

(1)struct 和 class 的区别?

答案:

区别:

a. 类可以继承,结构体不可以

b. 可以让一个类的实例来反初始化,释放存储空间,结构体做不到

c. 类的对象是引用类型,而结构体是值类型。所以类的赋值是传递引用 ,结构体则是传值。

相同点:

a,类和结构体都可以扩展

b,定义属性用于储存值

c,定义方法用于提供功能

d,定义下标用于通过下标语法访问值

e,定义初始化器用于生成初始化值

(2)class与staitc关键字的区别?

a. static 可以在类、结构体、或者枚举中使用。而 class 只能在类中使用。

b. static 可以修饰存储属性,static 修饰的存储属性称为静态变量(常量)。而 class 不能修饰存储属性。

c. static 修饰的计算属性不能被重写。而 class 修饰的可以被重写。

d. static 修饰的静态方法不能被重写。而 class 修饰的类方法可以被重写。

e. class 修饰的计算属性被重写时,可以使用 static 让其变为静态属性。 f. class 修饰的类方法被重写时,可以使用 static 让方法变为静态方法。

(3)swift是如何解决循环引用问题的?

答案: 请参考:Unowned 还是 Weak?生命周期和性能对比

4. 性能优化题

(1)了解App进行性能优化吗,影响App启动时间的因素有哪些?

答:1.1 App性能优化涉及方面很多。个人感觉面试官主要想知道作为开发人员,对Instruments工具的了解及使用情况,关于 Instruments里面工具: Time Profiler: 性能分析

Zombies:僵尸对象检测

Allocations:内存检查

Leaks:内存泄露检测。

1.2 响应App启动时间的因素大体分为pre-main(执行App main函数前时间)和main(执行App main函数时间)两部分。

需要更多iOS面试文集资料,加iOS开发交流群:789143298,群文件直接获取——点击加入:iOS开发交流群

ios charts显示固定个数_上次挂在了百度iOS二面不服气, 三月之期已到,这次终于拿下offer!...相关推荐

  1. flex布局常用布局方式(一行显示固定个数,自动换行显示)

    一行显示固定个数,自动换行显示 基于uni-app实现一行显示固定个数的元素,元素可以遍历生成的,并且自动换行显示,效果如下图所示 代码实现: <template><view cla ...

  2. ios 系统状态栏样式修改_超简单!!! iOS设置状态栏、导航栏按钮、标题、颜色、透明度,偏移等...

    原标题:超简单!!! iOS设置状态栏.导航栏按钮.标题.颜色.透明度,偏移等 1. 要实现以下这些效果都非常简单 2. 废话不多说,先看看实现效果 3. 下面告诉你我为什么说实现这些效果非常简单 比 ...

  3. 光栅衍射主极大个数_大学物理——光的干涉和衍射(二)

    今日一言:梦想是什么,梦想就是一种让你感到坚持就是幸福的东西.--<中国合伙人> 大学物理--光的干涉和衍射(2) 已经进入了光的偏振,而我还在第九章光的衍射这里咸鱼. 学习资料: < ...

  4. ios 中文输入法 完成事件_让聊天更方便 百度输入法开启AI助聊功能

    随着移动网络在国内的普及,现而今我国已经有了11亿之多的移动网民,互联网也成为了承载大家便捷交流沟通一种最好的方式之一,而除了通过视频与语音聊天之外,其实文字还是最方便且最不打扰人的一种交流方式.这其 ...

  5. ios 上传图片失败 小程序_【报Bug】百度小程序真机IOS无法上传图片

    详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 在百度小程序开发者 ...

  6. unity双面显示在哪_双面屏努比亚Z20售3499起 4800万三摄+855Plus+4K电池

    [PConline 资讯]8月8日,努比亚Z20年度旗舰新品发布会在北京举行,努比亚更新旗下旗舰级Z系列,为其配备双面柔性OLED屏幕.4800万三摄.30倍变焦.游戏四指操控等实用体验功能. 努比亚 ...

  7. win10文件显示后缀名_手机必装!百度家的万能文件管理器,功能强大无广告!...

    不做深度指南,只愿浅度指北使用安卓的朋友应该都知道,这款强大的文件浏览器,在我之前的推文中,介绍了如何使用 ES 共享电脑中的视频,有小伙伴评论竟然还有这样的功能:那么,今天,小北就介绍一下它强大的功 ...

  8. python小白逆袭大佬_飞桨深造学院百度深造7天打卡第6期:python小白反攻大神的经验,深度,学习,日,第六期,Python,小白逆袭,结营,心得...

    先来说说这七天的课程里有哪些具体收获吧!!! Day1-人工智能概述与入门基础 第一天只是学习了一些人工智能的基本的有关知识,然后讲了讲python的基本语法(哈哈,对于刚刚学完python的我,第一 ...

  9. 日期时间在ios上显示错误

    最近在开发中发现日期在ios上显示有问题. 解决办法: const iosDate = "ios的日期";/** 有问题的 */ new Date(iosDate) // NAN/ ...

最新文章

  1. C# Socket系列三 socket通信的封包和拆包
  2. LVS+Keepalived-DR模式负载均衡高可用集群
  3. mysql设计表月份_mysql,表设计
  4. 32k通过地址跳转到函数_【HYPERLINK】函数技巧,你一定要知道的!!!
  5. 操作系统设计与实现 读笔(2)
  6. 【入门篇】黑盒测试基础
  7. 赢在微创新_小米用互联网颠覆中国市场的内幕与方法
  8. R语言绘图-解决坐标轴测度问题
  9. 2021年危险化学品经营单位安全管理人员考试及危险化学品经营单位安全管理人员考试资料
  10. 怎么将计算机的网络恢复连接,win7怎么还原网络设置 win7本地连接不上的解决方法...
  11. 网络狂飙(netspeeder) v3.28 游戏版 怎么用
  12. Access violation reading location 0xccccccc0运行异常的解决方法
  13. linux好几百g空间使用,linux磁盘空间被占用100%-148
  14. 使用echarts插件时,发现y值相同,但不是同一条直线,解决方法
  15. qst -sim 出现 license 错误
  16. 阿里 oracle 时间戳,阿里巴巴的骄傲,合伙人刘振飞回忆,OceanBase十年时间登上巅峰...
  17. JAVA面向对象程序设计-FeiGe快递系统-继承III
  18. python除法运算定律_除法运算定律
  19. 易语言如何引用模块和模块中的类
  20. 利尔达客思之“智能照明”的本质解析

热门文章

  1. 信息产业浪潮中,京东 IoT 的技术演进与实践创新
  2. 他曾一举击败英伟达,却因坚持研发背负骂名
  3. 阿里动物园再添新丁,小蛮驴搞定物流最后三公里!
  4. 分析师:苹果或推出自家搜索引擎;曝因芯片缺货,华为智慧屏削减30-40%订单;Rust 1.46.0 发布|极客头条
  5. 为信息产业自主化而奋斗,第一本龙芯平台的Linux内核书来了!
  6. 2020年,我靠Java加薪3倍工资,只因做对这件事
  7. 中国开源产品如何走向世界?
  8. 15 年经验专家解读 IIoT 的挑战及应对思路!
  9. 苹果进入后 iPhone 时代!
  10. 百度网盘将推出单次会员服务;苹果回应否认操纵搜索结果;Node.js 12.7.0 发布 | 极客头条...