笔试面试
文章平均质量分 54
乞力马扎罗的雪CYF
一只不孤独的猿。
展开
-
2017秋季校园招聘iOS开发岗位面试题集锦
笔者参加了2017秋季不少的校招iOS岗位面试,下面我把这些面试题都贴出来和大家共勉:一.搜狐快站1.谈谈你做过的项目;2.项目中最有成就感的部分;3.倒计时如何实现?(NSTimer,还有其他的实现方式吗);4.UIButton的继承关系?5.iOS中可以进行输入的控件?(UITextView,UITextField);6.快排的实现原理;7.短信验证码会有倒计时功能吗?第一次验证失败后还可以再原创 2016-12-06 00:55:18 · 10518 阅读 · 6 评论 -
Cocoa Touch的类名为什么是以两个大写字母开头的?
在我们开发iOS的时候经常会看到诸如NSObject,NSNumber,等等这样的类,其他的前缀还包括CA,CL,CG等等前缀。这是怎么回事呢?我先来说说NS前缀吧。 NS代表的是NeXTSTEP,是乔布斯在1985年离开苹果之后创建的电脑公司。同时该公司的产品包括一款使用OC开发的操作系统,该操作系统里面有很多NS的缩写,后来在96年Apple收购了NeXTSTEP,里面的一些东西原创 2015-10-24 16:03:36 · 2391 阅读 · 0 评论 -
iOS钥匙串Keychain浅析
根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用keychain来保存WiFi密码,VPN凭证等。它是一个SQLite数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。 比如在Mac的LaunchPad中,就有一个钥匙串访原创 2015-10-26 17:20:57 · 4277 阅读 · 0 评论 -
Objective-C——协议(Protocol)详解与代理(委托)设计模式
协议的声明看起来类似一个类的接口,不同的是协议没有父类也不能定义实例变量。协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法。协议在以下场合非常有用:(1)需要由别的类实现的方法;(2)声明未知类的接口;(3)两个类之间的通信;协议的基本特点:(1)协议可以被任何类实现的方法;(2)协议本身不是类,它是定义了一个其他类可以实现的接口;(3)类别也可以采原创 2015-11-06 11:42:39 · 6674 阅读 · 2 评论 -
Objective-C——atomic一定是线程安全的吗?
我们在学习OC的时候认为,atomic使用了原子性,保证了线程安全,事实真的是这样吗? nonatomic的内存管理语义是非原子性的,非原子性的操作本来就是线程不安全的,而atomic的操作是原子性的,但是并不意味着它是线程安全的,它会增加正确的几率,能够更好的避免线程的错误,但是它仍然是线程不安全的。 当使用nonatomic的时候,属性的setter,getter操作是原创 2015-11-06 20:47:19 · 12654 阅读 · 2 评论 -
Objective-C——扩展(Extension)详解
我在上一篇博客中详细讲解了Category类别《Objective-C——类别(Category)详解》,而扩展和类别又十分的相似。我们今天就来深入学习扩展。 Objective-C 2.0之后增加了Extension,所谓的扩展,其实为一个类添加额外的方法或者属性,这些方法和属性是私有的。而我们又常常把Extension成为匿名的Category。类扩展是在.m文件中声明私有方法非原创 2015-11-06 10:11:24 · 5161 阅读 · 3 评论 -
程序员面试必备规程
第一个问题就是“不求甚解”。何为不求甚解?其大多数的问题就是在于大量的使用第三方的jar包,问他个原理一点也答不上来,甚至是最基础的。举个例子说明,比如我问他json数据怎么解析,都知道哪些解析器,直接不知道,因为现在的开发者都直接去使用GJSON,从来不去了解解析的整个过程和原理,更不会写。虽然用google提供的工具可以轻松实现,但是原理和过程还是得要学习的。学了总会有用,现在第三方的转载 2015-09-24 11:51:59 · 1318 阅读 · 0 评论 -
面试中如何“投机取巧”
(1)请你自我介绍一下自己?提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过最成功的事情、主要的成就等。这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说的合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个转载 2015-09-16 01:11:13 · 2112 阅读 · 0 评论 -
作为程序员最应该投资的是这十件事
(1)博客建立自己的博客,每月至少发布一篇文章。做点研究,因为只有自己亲身经历过,才能言之有物,不会听上去像吹牛皮。学会如何写文章,像以前你的老师教的那样:列大纲,描述情节,最后检查语法和错别字。然后,即使再也不舍也要大刀阔斧的简化和缩短文章到一眼就能知道大概的意思。(2)开源现在的年轻人可能没有经历过,程序员随时会失业的悲惨境地。但是即使是在最黑暗的时期,凡是做过开源项目的,转载 2015-09-16 00:53:52 · 1625 阅读 · 0 评论 -
剑指Offer读书笔记(持续更新中)
(1)定义一个空的类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到的结果是多少?答案是1。空类型的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,由编译器决定。Visual Studio中每个空类型的实例占用1字节的空间。如果在该类型中添加一个构造函数和析构函数原创 2015-08-23 23:34:03 · 3889 阅读 · 1 评论 -
iOS理解扩展的运行机制
在安装扩展之后,扩展并不会自动运行,用户必须执行特定的操作来启用扩展。如果是Today扩展,用户可以在通知中心的Today视图中编辑启用扩展。如果是自定义键盘扩展,用户需要在系统设置的通用选项下的键盘选项中启用自定义键盘扩展。如果是Share扩展,用户只需点击系统提供的分享按钮,即可在分享列表中找到分享扩展。 一个扩展并不是一个app,他的生命周期和运行环境不同于普通app。在生命周期原创 2015-10-17 14:28:19 · 1369 阅读 · 0 评论 -
iOS SpriteKit/SceneKit/Metal浅析
【SpriteKit】 在iOS7中内置了新的SpriteKit框架,该框架主要用来开发2D游戏。是开发iOS和OS X 下的2D游戏引擎,可以使用OC或者Swift来进行开发。目前已经支持的内容包括:精灵、很酷的特效(例如视频、滤镜和遮罩),并且还集成了物理库等许多东西。首先指出在iOS中开发2D游戏SpriteKit并不是唯一的选择,我们先来看看SpriteKit的特点和优缺点:原创 2015-10-20 15:57:50 · 10224 阅读 · 1 评论 -
Objective-C——类别(Category)详解
封装是面向对象的一个特征,OC也不例外,但是有的时候我们会碰到这样的情况,比如我封装了一个类,不想再动它了,可是随着程序功能的增加,需要在那个类中增加一个小小的方法,这时我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时随手添加一个该类的类别(category)即可。(1)在类别中定义的方法,会成为原始类中的一部分,与其他方法的调用没有区别;(2)通过给父类定义类别的方法原创 2015-11-05 19:20:09 · 3715 阅读 · 2 评论 -
Objective-C内存管理详解——点语法的内存管理
一.【赋值】(1)assign:直接赋值,默认;(2)retain:保留对象;(3)copy:拷贝对象;二 .【读写性】(1)readwrite:生成getter,setter方法,默认;(2)readonly:生成getter方法;三.【原子性】(1)atomic:多线程情况下,存在线程保护,默认;(2)nonatmic:多线程情况下,不存在线原创 2015-10-14 09:10:24 · 1397 阅读 · 0 评论 -
Objective-C代码块Block详解
block代码块是OC的一个特性,除了可执行的代码外,还可能包含变量的自动绑定(栈),或内存托管(堆)。所以一个block维护一个状态集(数据),可以在任何时候执行。block用来作为回调特别有用。 block可以作为函数参数或者函数的返回值,而本身又可以带输入参数或返回值。在多线程,异步任务,集合遍历,接口回调等地方用得比较多。使用标识符^.。为了性能,block都是分配在栈stack原创 2015-10-25 19:41:14 · 3452 阅读 · 0 评论 -
iOS——LLVM、Clang浅析
我们在iOS调试中经常会看到Clang这个,那么Clang到底是什么呢?我们来简单了解一下。 Clang是一个C、C++、OC语言的轻量级编译器。源代码发布于BSD协议下。Clang是由C++编写,基于LLVM,发布于LLVM BSD许可证下的编译器。它与GNU C语言规范几乎完全兼容,并增加了额外的特性。 那么来比较一下Clang和GCC。Clang编译速度更快,编译原创 2015-10-24 20:52:27 · 7101 阅读 · 0 评论 -
Objective-C自动释放池AutoreleasePool详解
当您向一个对象发送一个autorelease消息时,cocoa就会将这个对象的一个引用放入到最新的自动释放池。当程序执行结束时,自动释放池就会被释放,池中所有的对象也就会被释放,也就是执行一次release操作。所以说,自动释放池是OC中的一种内存自动回收机制,可以将一些临时变量通过自动释放池来统一回收和释放。 在一个OC编写的iOS项目中,main.m文件下的代码如下:这里就使用原创 2015-10-12 23:01:25 · 2286 阅读 · 0 评论 -
iOS程序员面试要注意的几个问题~
1自动释放池是什么,如何工作?当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。2说一说static 关键字(1)函数体内 static 变量的作用范围为该函数体,不同转载 2015-09-22 00:47:18 · 1534 阅读 · 0 评论 -
Objective-C——retain/copy/assign/atomic/nonatomic/strong/weak/readonly/readwrite详解
【atomic/nonatomic】(1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。(2)nonatomic:非原子性访问,属性赋值的时候不加锁,多线程并发访问会提高性能。但可能会造成不安原创 2015-11-06 19:33:29 · 3920 阅读 · 5 评论 -
国内搜索大哥iOS面试题
每一次面试之后都会对问到的面试题进行总结。这篇总结的是我面试某大型搜索公司的iOS面试题,一面(15min)+二面(30min),并拿到实习offer。当然在今天这个特殊的节日,祝大家新年快乐,希望大家都能拿到合适的offer。一面电面:15min;1.算法:数组中(无序的正整数数)如何找到第n大的数;2.算法:数组中1—100的有序数字如何找到第n大的数;(遍历计数)3.讲一讲OC中的运行时,动原创 2016-02-07 09:53:00 · 4084 阅读 · 2 评论 -
国内大型门户网站iOS面试题
拿到该市值很高的门户网站offer颇不容易,总共经历了四面,其中前三面都是技术面,面试时间加起来120+ min。现在我把面试题和大家进行分享,希望在交流中实现共同进步。一面(16min)+二面(52min)1.一组正整数数字,如何找出两个数加为100的组合;(首先要排序)2.assign和weak的区别;3.http和https的区别;抓包的时候有什么区别;4.get和post的区别,其他还有哪原创 2016-02-07 10:05:14 · 4849 阅读 · 4 评论 -
国内在线旅游巨头iOS面试题
首先今天祝大家新年快乐!如果你今天还在看这篇博客,那么你对写代码绝对是真爱。下面是我在面试某公司iOS开发实习生的面试题(拿到offer),今天作为福利分享给大家。一面技术面(90min)1.线程,有哪几种线程类型及使用;NSThread,NSOperationQueue,GCD;2.内存管理,内存优化;3.cocoapods;4.KVO,KVC;5.strong,weak,什么时候会造成循环引用原创 2016-02-07 09:42:44 · 4403 阅读 · 0 评论 -
iOS——instancetype浅析
OC是一门正在迅速发展的语言,ARC,object literals ,subscripting ,blocks,Auto Synthesis,让我们看到它惊人的改变。instancetype是clang3.5开始,clang提供的一个关键字,表示某个方法返回的未知类型的OC对象。在这之前,我们知道可以用id来表示未知返回类型,那为什么要用instancetype呢?【关联返回类型】根据C原创 2015-10-24 22:42:25 · 4392 阅读 · 0 评论 -
iOS开发——RegressionBug和RegressionTest浅析
RegressionBug就是由于开发新特性或修复bug导致以前正常工作的功能出现bug的情况。常常出现在开发中。RegressionBug又分为Release Regression和Build Regression.1.Release Regression指的是和上一个产品版本相比,出现的bug。2.Build Regression通常在开发软件的一个版本过程中,会有很多的Build,通原创 2015-10-25 20:43:18 · 2694 阅读 · 0 评论 -
Cocoa Touch框架浅析
Cocoa Touch包括:(1)Core Animation:通过Core Animation,可以通过一个基于独立图层的简单的编程模型来创建丰富的用户体验。(2)Core Audio:Core Audio是播放,处理和录制音频的专业技术,能够轻松为应用程序添加强大的音频功能。(3)Core Data:提供了一个面向对象的数据管理解决方案,易于使用和理解,甚至可以处理任何原创 2015-10-24 15:27:29 · 2535 阅读 · 0 评论 -
苹果AirPlay浅析
AirPlay是苹果公司在iOS4.2即Mac OS Mountain Lion中加入的一种播放技术。可以将iPhone、iPod、iPad和Mac上的视频镜像传送到支持AirPlay的设备上(如音响、Apple TV)中播放。准确来说,AirPlay是一种使用WiFi的无线通讯技术。我在一篇博客中谈到的《iPhone屏幕投射到Mac的解决方案》使用AirServer把iPhone屏幕投射到Mac原创 2015-10-24 14:46:30 · 3837 阅读 · 2 评论 -
iOS用户首选项NSUserDefaults浅析
NSUserDefaults称为用户首选项,是一个轻量级的数据存储机制。关于如何使用,请参考《iOS项目开发实战——使用用户首选项数据API存储信息》《iOS项目开发实战——使用用户首选项数据进行启动提示》这两篇博客。这里我们要来分析一下NSUserDefaults的其他特性。 首先NSUserDefaults是单例类,是单例模式的一个实例。在iOS中,单例模式很常见,它用于确保特定原创 2015-10-23 09:42:39 · 1852 阅读 · 0 评论 -
Android开发经典笔试面试题汇总(持续更新中)
1.我们都知道Handler是线程与Activity通信的桥梁,如果线程处理不当,你的机器就会变得很慢,那么线程销毁的方法是:(A)A. onDestroy()B. onClear()C. onFinish()D. onStop()理解:正确销毁线程的方法应该是handler.removeCallBacks()。2.SharedPreferences保存文件的路径和原创 2015-08-02 20:42:41 · 6084 阅读 · 4 评论 -
Swift——map函数浅析
Swift语言的数组提供了一个map函数很好用,可建立一个a数组的映射数组b,即数学上的y = f(x).我为大家用代码来实现一下:import Foundation//定义数组;var arr = [1,2,3,4,5]//需要对数组中的每一个值+10操作;func fmap(a : Int) -> Int{ return a + 10}//这是采用函数的方式//原创 2015-10-25 10:34:49 · 2736 阅读 · 0 评论 -
iCloud浅析
iCloud是苹果公司所提供的云端服务,使用者可以免费存储5G的资料。iCloud可以存放照片、文档等内容,以无线的方式推送到所有的设备上,一切都会自动进行。iCloud有什么功能?(1)通过无线网络用户可以进行iCloud的各种云存储,包括音乐,应用,电子书,照片,通讯录,邮件等数据,均可以进行自动的上传与下载。同时还可以分享给自己的朋友,支持不同苹果设备之间的云内容交换。(2)iC原创 2015-10-17 10:41:05 · 2958 阅读 · 0 评论 -
iOS扩展Extension详解
扩展Extension是iOS8中引入的非常重要的新特性。扩展让App之间的数据交互成为可能。用户可以在App中使用其他应用提供的功能,而无需离开当前的应用。 在iOS8之前,每一个App在物理上都是彼此独立的,App之间不能互访彼此的私有数据。而在扩展引入之后,其他App可以与扩展进行数据交换。基于安全和性能的考虑,每一个扩展运行在一个单独的进程中,他拥有自己的bundle,bun原创 2015-10-17 13:21:02 · 2495 阅读 · 0 评论 -
iOS项目开发实战——屏幕适配、单位点和分辨率
在项目开发中,目前iPhone有如下的几种屏幕宽高(单位点)和屏幕模式之间的关系:(1)iPhone 3GS : 320点*480点 ;1*;分辨率:320*480;(2)iPhone 4/iPhone 4s :320点*480点 ;2*; 分辨率:640*960;(3)iPhone 5/iPhone5s: 320点*568点 ;2*; 分辨率:640*1136;原创 2015-09-23 00:47:49 · 2038 阅读 · 0 评论 -
nib与xib浅析
在如今的Xcode中,已经集成了Interface Builder,但是在之前,这两者是分开的。同时还不得不提到两种文件:nib和xib,今天我们来做一个简单的区分。 nib是NeXT Interface Builder的缩写。xib是XML Interface Builder的缩写,是在Interface Builder 3.0中加入的。相同点:nib和xib都是Interfa原创 2015-11-04 21:48:57 · 2918 阅读 · 2 评论 -
iOS开发设计模式详解
在软件开发中一般认为有23种设计模式(design pattern),这是软件开发中的较高的境界了。在iOS开发中最常用的有哪些设计模式呢?我们今天来分析一下:一.【代理模式】使用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。其实就像是Java中的接口,类可以实现或者不实现协议(接口)中的方法。优点:低耦合。使用原则:开闭原则。实例:TableVi原创 2015-11-04 20:59:52 · 4521 阅读 · 2 评论 -
Objective-C内存管理详解——ARC和垃圾回收机制
ARC的基本概念: ARC自动引用计数,当你在编译程序时提供自动管理内存的功能,它会自动加入内存的控制代码,控制对象的生命周期。这是在iOS4以后引入的技术。此时你在代码中使用release,retain时就会报错,也就是这些方法被禁用。当然你也可以在项目中进行设置,选择重新启用MRC(手动内存管理)。在Build Setting里面把“Objective-C Automatic R原创 2015-10-14 11:23:19 · 5077 阅读 · 0 评论 -
面过蘑菇街、微店、美团、京东,已拿美团微店offer
蘑菇街(java应用开发工程师 电面)8月份蘑菇街内推,面试真是慢的要死,基本10天一面,最后被HR拒绝。因为时间太久,可能有些问题已经回忆不起来。一面重点问了问项目,socket通信,TCP三次握手四次挥手,NIO,BIO,区别?还有数据库mysql select优缺点,这个问题没听明白,后来把我引到nosql,mongdb,然而并不会,然后去我项目的数据库结构进行了转载 2015-10-07 01:41:14 · 3238 阅读 · 1 评论 -
iOS包管理工具——Cocoapods详解
在进行iOS开发的时候,总免不了使用开源的第三方库,使用这些库的时候我们往往需要经历以下步骤:(1)下载开源库的源代码并引入到工程;(2)向工程中添加开源库所需要的framework;(3)解决开源库和开源库之间,以及开源库和工程之间的依赖关系,检查重复添加framework的问题;(4)如果开源库有更新,还需要把旧的开源库删除,重复执行以上的三个步骤;自从有了Cocoapod原创 2015-10-16 09:27:56 · 1518 阅读 · 0 评论 -
面试腾讯就是这样?
今天上午参加了腾讯的面试,回来后比较累,还要应付老师那边,本来不准备写帖子了,想了想,说不定会对大家有帮助,晚上就写一下。本人做的是安卓端的。面试的时间差不多是10点半。早上差不多提前1个小时到了面试的地方,看到已经 有很多人在等待了。进去后,如果是收到短信的,只要坐在那里等着叫名字就可以了,如果是霸面的,要先提交简历。这点腾讯还是做的很不错的。面试我的可能年经比较大,头发已经白了一些。下转载 2015-10-07 01:24:13 · 1804 阅读 · 2 评论 -
iOS开发——Handoff详解
iOS8推出一个新特性,叫做Handoff。Handoff中文含义为换手(把接力棒传给下一个人),可以在一台Mac和iOS设备上开始工作,中途将工作交换到另一个Mac或iOS设备中进行。这个在iOS8和Yosemite得到支持,当然在iOS9和EI Captain中也有这个功能。 Handoff中使用了一个“活动”的概念,它可以在多台设备间传递用户的“活动”。当用户从一台设备切换到另一原创 2015-10-17 01:06:46 · 5072 阅读 · 0 评论 -
Objective-C内存管理详解——对象所有权
当一个所有者(owner,其本身可以是任何一个OC对象),做了以下某个动作时,它就拥有了对一个对象的所有权(ownership).(1)如果创建或者复制某个对象时,则拥有了该对象的所有权:alloc,allocWithZone,copy,copyWithZone,mutableCopy,mutableCopyWithZone(2)如果没有创建对象,而是将对象保留使用,同样拥有该对象的所原创 2015-10-13 17:39:27 · 1548 阅读 · 0 评论