面试题《一》

文章来自转载 上面的答案都比较“抽象”,下面是我面试iOS程序员的问题列表(私人珍藏),能准确答对一半以上的人非常少(其实这些问题真的不难)。。有兴趣的可以试试。。

  1. 什么是arc?(arc是为了解决什么问题诞生的?)
  2. 请解释以下keywords的区别: assign vs weak, __block vs __weak
  3. __block在arc和非arc下含义一样吗?
  4. 使用atomic一定是线程安全的吗?
  1. 描述一个你遇到过的retain cycle例子。(别撒谎,你肯定遇到过)
  2. +(void)load; +(void)initialize;有什么用处?
  3. 为什么其他语言里叫函数调用, objective c里则是给对象发消息(或者谈下对runtime的理解)
  4. 什么是method swizzling?
  5. UIView和CALayer是啥关系?
  6. 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
  7. 使用drawRect有什么影响?(这个可深可浅,你至少得用过。。)
  8. ASIHttpRequest或者SDWebImage里面给UIImageView加载图片的逻辑是什么样的?(把UIImageView放到UITableViewCell里面问更赞)
  9. 麻烦你设计个简单的图片内存缓存器(移除策略是一定要说的)
  10. 讲讲你用Instrument优化动画性能的经历吧(别问我什么是Instrument)
  11. loadView是干嘛用的?
  12. viewWillLayoutSubView你总是知道的。。
  13. GCD里面有哪几种Queue?你自己建立过串行queue吗?背后的线程模型是什么样的?
  14. 用过coredata或者sqlite吗?读写是分线程的吗?遇到过死锁没?咋解决的?
  15. http的post和get啥区别?(区别挺多的,麻烦多说点)
  16. 我知道你大学毕业过后就没接触过算法数据结构了,但是请你一定告诉我什么是Binary search tree? search的时间复杂度是多少?我很想知道!

技术层面:

1、对面向对象的理解,不好也可以写程序,但是写不好大程序 2、对内存的理解 3、调试的能力 4、调优的能力

产品层面:

1、对基本商业模式的了解 2、对流行产品和产品流行趋势的了解 3、对app store营销基础知识的了解 4、对SNS的了

其他技能

1.通用编程技能,例如:一道小算法,数据结构的实现方式,网络,多线程。 2.开发语言,例如:语言特性,重新实现语言提供的功能,是否深入研究过这门语言的某部分。 3.开发平台,例如:该平台的内部消息,内存,线程等机制。 4.工具,例如:调试技巧,是否熟练使用,代码管理工具,项目管理工具,效率工具。 5.行业视角,例如:用什么,知道什么。 6.其他能力,例如:网络上解决问题的能力,是否有持续学习的意识。

有经验的,1-6都会问到,刚毕业的,只要重点面1和6

  1. 你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗?

  2. 你实现过多线程的Core Data么?NSPersistentStoreCoordinator,NSManagedObjectContext和NSManagedObject中的哪些需要在线程中创建或者传递?你是用什么样的策略来实现的?

  3. Core开头的系列的内容。是否使用过CoreAnimation和CoreGraphics。UI框架和CA,CG框架的联系是什么?分别用CA和CG做过些什么动画或者图像上的内容。(有需要的话还可以涉及Quartz的一些内容)

  4. 是否使用过CoreText或者CoreImage等?如果使用过,请谈谈你使用CoreText或者CoreImage的体验。

  5. NSNotification和KVO的区别和用法是什么?什么时候应该使用通知,什么时候应该使用KVO,它们的实现上有什么区别吗?如果用protocol和delegate(或者delegate的Array)来实现类似的功能可能吗?如果可能,会有什么潜在的问题?如果不能,为什么?(虽然protocol和delegate这种东西面试已经面烂了…)

  6. 你用过NSOperationQueue么?如果用过或者了解的话,你为什么要使用NSOperationQueue,实现了什么?请描述它和GCD的区别和类似的地方(提示:可以从两者的实现机制和适用范围来描述)。

  7. 既然提到GCD,那么问一下在使用GCD以及block时要注意些什么?它们两是一回事儿么?block在ARC中和传统的MRC中的行为和用法有没有什么区别,需要注意些什么?

  8. 您是否做过异步的网络处理和通讯方面的工作?如果有,能具体介绍一些实现策略么?

  9. 对于Objective-C,你认为它最大的优点和最大的不足是什么?对于不足之处,现在有没有可用的方法绕过这些不足来实现需求。如果可以的话,你有没有考虑或者实践过重新实现OC的一些功能,如果有,具体会如何做?

  10. 你实现过一个框架或者库以供别人使用么?如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架。

申请的空间的内存在哪个区?

  • new 申请的时候,申请的空间在内存的堆区,(程序动态分配的内存空间)
  • 初始化的时候,如果实例变量是基本类型,此时给初始化的为0,如果是字符串,初始化为null,

实例变量又保存在什么地方?

  • 实例变量,存放在堆区,指针变量,对象名存放在栈区,

对象方法保存在什么地方?

  • 对象的方法存放在代码区
  • 首先找到p对应的堆区空间,然后找到-isa指针,在找到指向的代码区,然后到该空间中找方法,
  • 一个类可以创建多个对象。

转载于:https://juejin.im/post/5b8f78205188255c3632f7fc

很抱歉,我无法提供具体的2024年前端面试题一百道,因为面试题的内容和形式可能会因公司、职位和行业而异。不过,我可以提供一些通用的前端面试题,以帮助您准备面试。 1. 请简述前端开发的主要技术栈包括哪些? 2. 请描述一下什么是HTML、CSS和JavaScript? 3. 请解释一下什么是响应式设计?如何在前端开发中实现响应式设计? 4. 请简述一下什么是前端框架,并列举几个常用的前端框架。 5. 请解释一下什么是Vue.js,并简述其核心概念和用法。 6. 请解释一下什么是React.js,并简述其核心概念和用法。 7. 请简述一下什么是Webpack,并解释其作用和用法。 8. 请解释一下什么是ES6,并列举一些ES6的新特性。 9. 请简述一下什么是前端性能优化,并列举一些优化技巧。 10. 请解释一下什么是HTTP/2,并简述其优点和缺点。 除了以上问题,您还可以准备一些更具体的问题,例如: 1. 请解释一下如何使用CSS选择器选择元素? 2. 请解释一下如何使用JavaScript操作DOM? 3. 请描述一下如何使用Vue.js实现一个简单的计数器组件。 4. 请解释一下如何使用React.js实现一个简单的表单组件。 5. 请描述一下如何使用Webpack进行代码拆分和优化。 6. 请解释一下什么是跨域问题,并简述如何解决跨域问题。 7. 请描述一下如何使用JavaScript进行异步编程,例如使用Promise和async/await。 8. 请解释一下什么是前端安全,并列举一些常见的安全问题及其解决方法。 希望以上信息对您有所帮助,祝面试成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值