精华内容
参与话题
问答
  • iOS面试

    2020-05-07 15:55:22
    文章目录1.关于简历[2.iOS面试要求( 20K-60K,总结腾讯,阿里和今日头条等的招聘信息)]...2.iOS面试要求( 20K-60K,总结腾讯,阿里和今日头条等的招聘信息) ...
    展开全文
  • ios 面试问题Here are 40+ commonly asked IOS interview questions and answers which will ... 这里有40多个IOS面试常见问题和答案,它们肯定会在面试中为您提供帮助。 1. Enlist the Latest IOS Development Pa...

    ios面试问题

    Here are 40+ commonly asked IOS interview questions and answers which will definitely help you out in interviews.

    这里有40多个IOS面试常见问题和答案,它们肯定会在面试中为您提供帮助。

    1. Enlist the Latest IOS Development Patform?

    1.申请最新的IOS开发模式吗?

    The recent iOS Development platforms are as follows: iOS 9.2 beta 2 Build version: 13C5060d IOS 9.1 Build Version: 13B143

    最新的iOS开发平台如下: iOS 9.2 beta 2构建版本:13C5060d IOS 9.1构建版本:13B143

    2. Explain Fast Enumeration.

    2.解释快速枚举。

    Fast enumeration is a iOS Programming Language feature that enables you to enumerate over the contents of a collection. It will also make your code execute your code faster due to internal implementation which gets reduced message sending overheads and increased pipelining potential.

    快速枚举是一种iOS编程语言功能,可让您枚举集合的内容。 由于内部实现,这还将使您的代码更快地执行代码,从而减少了消息发送开销并增加了流水线潜力。

    3. Explain ARC.

    3.解释ARC。

    ARC represents Automatic Reference Counting. It is a Compiler level feature that simplifies the process of managing the lifetimes of Objects in Objective – C. ARC evaluates the Lifetime requirements of Objects and automatically includes appropriate Methods to be called during Compilation.

    ARC代表自动参考计数。 它是编译器级别的功能,可简化在Objective-C中管理对象生存期的过程。ARC评估对象的生存期要求,并自动包括在编译过程中要调用的适当方法。

    IOS Interview Questions and Answers

    Image Source

    图片来源

    4. Explain Mutable and Immutable Types in Objective C Programming Language.

    4.用Objective C编程语言解释可变和不可变类型。

    Mutable Types means you can modify the Contents later when you feel the need. However, when an Object is marked as Immutable, it implies that the data cannot be modified later after it has been initialized. Therefore, the stored values are Constant here.

    可变类型意味着您可以在以后需要时修改目录。 但是,当将一个对象标记为“不可变”时,则意味着该数据在初始化之后就无法再修改。 因此,此处存储的值是常量。

    Example: NSString, NSArray values cannot be altered after initialization.

    示例: NSString,NSArray值在初始化后不能更改。

    5. What is Garbage Collection?

    5.什么是垃圾回收?

    Garbage Collection is a Memory Management feature. It manages the allocation and release of the memory to your applications. When the garbage collector performs a collection, it checks for objects in the managed heap that are not executed by the applications.

    垃圾回收是一项内存管理功能。 它管理对应用程序的内存分配和释放。 垃圾收集器执行收集时,将检查托管堆中未由应用程序执行的对象。

    6. Explain xib.

    6.解释xib。

    .xib is a file extension that is associated with Interface Builder files. It is a graphics software that is used to test, develop and design the User Interfaces of different software products. Such extension files also contains development time format files that includes interface files created with the interface builder softwares.

    .xib是与Interface Builder文件相关联的文件扩展名。 它是一种图形软件,用于测试,开发和设计不同软件产品的用户界面。 此类扩展文件还包含开发时间格式文件,其中包括使用界面构建器软件创建的界面文件。

    7. Which Programming Languages are used for iOS Development?

    7. iOS开发使用哪种编程语言?

    The languages used for iOS development are as follows: 1. Objective-C 2. .NET 3. C 4. HTML5 5. JavaScript 6. Swift

    用于iOS开发的语言如下: 1. Objective-C 2. .NET 3. C 4. HTML5 5. JavaScript 6. Swift

    8. Explain App ID.

    8.解释应用程序ID。

    It is primarily used to identify one or more apps from a Unique Development team. It consists of a string divided into two parts. The string includes a Team ID and a Bundle ID Search String with a separator as a period. The Team ID is allocated by Apple and is different for every development team. A Bundle ID Search String is supplied by the App Developer.

    它主要用于识别唯一开发团队中的一个或多个应用程序。 它由分为两部分的字符串组成。 该字符串包括团队ID和捆绑ID搜索字符串,其中以句点作为分隔符。 团队ID由Apple分配,并且每个开发团队都不同。 应用程序开发人员提供了捆绑包ID搜索字符串。

    9. Explain usage of struct.

    9.解释struct的用法。

    struct is a Datatype in C Programming Language that enables encapsulation of other pieces of data into a single cohesive unit. It is similar to an object but in C Programming Language.

    struct是C编程语言中的一种数据类型,它可以将其他数据封装到单个内聚单元中。 它类似于对象,但使用C编程语言。

    10. What is an Object?

    10.什么是对象?

    Objects are essentially the variables that are of Class types. Objects are basic Run-Time entities in an Object oriented system. They may represent a place, a bank account or a person.

    对象本质上是属于类类型的变量。 对象是面向对象系统中的基本运行时实体。 他们可能代表一个地点,一个银行帐户或一个人。

    11. Enlist the methods to achieve Concurrency in iOS.

    11.争取在iOS中实现并发的方法。

    The following listed are the methods to achieve concurrency functionality in iOS: 1. Threads 2. Dispatch Queues 3. Operation Queues

    以下列出了在iOS中实现并发功能的方法: 1.线程 2.调度队列 3.操作队列

    12. What is Cocoa?

    12.什么是可可粉?

    Cocoa is an Application Development Environment for Mac OS X Operating System and iOS. It includes Compilations of a Runtime System, Object-Oriented Software Libraries and an Integrated Development Environment.

    Cocoa是适用于Mac OS X操作系统和iOS的应用程序开发环境。 它包括运行时系统,面向对象的软件库和集成开发环境的编译。

    13. What is a Framework?

    13.什么是框架?

    It is basically a conceptual structure or a scheme with an intension to support the expansion of the structure into something useful. A Framework is a layered structure indicating what kind of programs can or should be built and how they would interact. Frameworks includes actual programs that mentions programming interfaces and programming tools for working with the frameworks.

    它基本上是概念性结构或旨在支持将结构扩展为有用内容的方案。 框架是分层的结构,指示可以或应该构建什么样的程序以及它们如何交互。 框架包括提及程序设计接口和用于框架的编程工具的实际程序。

    14. Explain keywords alloc and new.

    14.解释关键字alloc和new。

    The alloc keyword is used to create a New Memory Location in the System. However, it does not initialize it. In case of New keyword, it also helps to create a New Memory Location in the system. However, it can initialize the Contents unlike the alloc keyword.

    alloc关键字用于在系统中创建新的内存位置。 但是,它不会初始化它。 如果使用New关键字,它也有助于在系统中创建一个New Memory Location。 但是,与alloc关键字不同,它可以初始化Contents。

    15. What are Selectors in Objective-C?

    15. Objective-C中的选择器是什么?

    A Selector in Objective C can be used to refer the name of a method when it is used in a Source-Code message to an Object. It also refers to the unique identifiers that can replace the Name when the Source Code is being Compiled. All the methods that have the same name have the same selector.

    当在源代码消息中将对象用于对象时,可以使用目标C中的选择器来引用方法的名称。 它还指的是在编译源代码时可以替换名称的唯一标识符。 具有相同名称的所有方法都具有相同的选择器。

    16. Enlist Frameworks for Cocoa.

    16.争取可可框架。

    The Frameworks developed for Cocoa are listed as follows: 1. Foundation 2. Application Kit

    为可可开发的框架如下: 1.基础 2.应用套件

    17. What is Bundle ID?

    17.什么是捆绑包ID?

    The Bundle ID uniquely defines every iOS Application. It is specified in Xcode. It is a Search String which is supplied by the Application Developer to match either the Bundle ID of a Single Application or a Set of Bundle IDs for a Group of Applications.

    捆绑包ID唯一定义每个iOS应用程序。 它在Xcode中指定。 它是由应用程序开发人员提供的搜索字符串,以匹配单个应用程序的捆绑ID或一组应用的捆绑ID。

    18. What is a Class?

    18.什么是课程?

    The entire set of data of an object can be made a user-defined data type using a class. Objects are basically variables of Class type. Once a Class has been defined, it is possible to create multiple Objects of its type. A Class is a collection of Objects of similar type.

    可以使用类将对象的整个数据集设置为用户定义的数据类型。 对象基本上是Class类型的变量。 一旦定义了一个类,就可以创建其类型的多个对象。 类是相似类型的对象的集合。

    19. Explain the difference between Inheritance and Category.

    19.解释继承和类别之间的区别。

    Category enables to add methods only. It does not allow the inclusion of Data Members unlike Inheritance where both the Data and Methods can be added. Category includes Complete Application in its Scope whereas Inheritance’s scope is only within that particular File.

    类别仅允许添加方法。 它不允许包含与继承不同的数据成员,在继承中不能同时添加数据和方法。 类别在其范围内包括完整应用程序,而继承的范围仅在该特定文件内。

    20. Explain App Bundle.

    20.解释应用程序捆绑包。

    During iOS application development, Xcode packages it as a bundle. A Bundle is a file directory that combines related resources together in one place. It contains the Application Executable File and supports Resource Files such as Localized Content, Image Files and Application Icons.

    在iOS应用程序开发过程中,Xcode将其打包为一个捆绑包。 捆绑包是一个文件目录,它将一个地方的相关资源组合在一起。 它包含应用程序可执行文件,并支持资源文件,例如本地化内容,图像文件和应用程序图标。

    21. What is Swift?

    21.什么是Swift?

    Swift is a programming language for development of applications for OS X, iOS, watchOS, and tvOS. These applications are developed using C and Objective-C. It does not have the constraints of C Programming. It has features for easier development and provides more flexibility.

    Swift是用于开发OS X,iOS,watchOS和tvOS应用程序的一种编程语言。 这些应用程序是使用C和Objective-C开发的。 它没有C编程的约束。 它具有易于开发的功能,并提供了更大的灵活性。

    22. What is a Protocol in Objective-C Programming Language?

    22. Objective-C编程语言中的协议是什么?

    A Protocol is used to define a list of required optional methods that a class needs to implement. If a class adopts a protocol, it must implement all the needed methods in the protocols it adopts. It is identical to an Interface in Java and also to a purely Virtual Class in C++. Cocoa uses protocols to support interprocess communication through Objective-C messages.

    协议用于定义类需要实现的必需的可选方法的列表。 如果类采用协议,则它必须在其采用的协议中实现所有必需的方法。 它与Java中的接口相同,也与C ++中的纯虚拟类相同。 可可使用协议来支持通过Objective-C消息进行进程间通信。

    23. Explain Formal Protocols.

    23.解释正式协议。

    Formal Protocols enables defining an Interface for a Set of Methods without any implementation. It is useful with DistributedObjects as they allow defining a protocol for communication between objects.

    正式协议允许无需任何实现即可为一组方法定义接口。 这对DistributedObjects很有用,因为它们允许定义对象之间通信的协议。

    24. What is Polymorphism?

    24.什么是多态?

    It enables a methods to exhibit different behaviours under different instances. The task of creating a Function or an Operator behave differently in different instances is known as Operator Overloading which is an implementation of Polymorphism.

    它使方法在不同情况下表现出不同的行为。 创建函数或运算符在不同实例中行为不同的任务称为运算符重载,它是多态性的一种实现。

    25. Differentiate between Release and Pool Drain.

    25.区分释放和池排放。

    The release keyword is used to free a memory location in the system which is not being utilized. The drain keyword is used to release the NSAutoreleasePool.

    release关键字用于释放系统中未被利用的内存位置。 漏极关键字用于释放NSAutoreleasePool。

    26. What is a Collection?

    26.什么是收藏集?

    A Collection is a Foundation Framework Class that is used to Manage and Store the group of Objects. The primary role of a Collection is to store Objects in the form of either a Set, a Dictionary or an Array.

    集合是用于管理和存储对象组的Foundation Framework类。 集合的主要作用是以集合,字典或数组的形式存储对象。

    27. Explain the significance of AutoRelease.

    27.解释自动发布的重要性。

    AutoRelease: When you send an Object AutoRelease message, it gets added to the Local AutoRelease Pool. When the AutoRelease Pool gets destroyed, the Object will receive a Release message. The Garbage Collection functionality will destroy the Object if it has the RetainCount as Zero.

    自动释放:发送对象自动释放消息时,它将被添加到本地自动释放池中。 当自动释放池被销毁时,对象将收到释放 消息。 如果RetainCount为零,则垃圾回收功能将销毁该对象。

    28. What is the First Responder and Responder Chain.

    28.什么是第一响应者和响应者链。

    A Responder Chain is a hierarchy of Objects that can respond to the events received. The first object in the ResponderChain is called the First Responder.

    响应者链是可以响应收到的事件的对象的层次结构。 ResponderChain中的第一个对象称为“第一响应者”。

    29. Explain Web Services?

    29.解释Web服务?

    The Web Services are the Application Components which enables communication using Open Protocols. These Web Services are Self – Describing and Self – Contained. Web Services can be found out by using UDDI. The base for development of Web Services functionality is Extensible Markup Language (XML).

    Web服务是允许使用开放协议进行通信的应用程序组件。 这些Web服务是自描述的和自包含的。 可以使用UDDI找到Web服务。 Web服务功能开发的基础是可扩展标记语言(XML)。

    30. Explain the difference between Cocoa and Cocoa Touch?

    30.解释可可粉和可可粉之间的区别吗?

    Cocoa is an Application Framework that enables development of Applications in Mac OS X Environment. It is basically a combination of two Frameworks i.e., Appkit Framework and Foundation Framework. Cocoa Touch is an Application Framework for iPod Touch. Iphone and iPad. It includes the Foundation Framework and UIKit Framework.

    Cocoa是一个应用程序框架,可用于在Mac OS X环境中开发应用程序。 它基本上是两个框架的组合,即Appkit框架和Foundation框架。 Cocoa Touch是iPod Touch的应用程序框架。 Iphone和iPad。 它包括基础框架和UIKit框架。

    31. Explain plist.

    31.解释plist。

    Plist represents Property Lists. It is a key-value store for the Application to Save and Retrieve persistent data values. This is specifically used for iPhone development. It is basically and XML File.

    Plist代表属性列表。 它是应用程序的键值存储,用于保存和检索持久数据值。 这专门用于iPhone开发。 它基本上是XML文件。

    32. Explain IPA.

    32.解释《近期行动计划》。

    IPA represents iOS App Store Package. It has an .ipa extension which represents iPhone application archive file that stores an iPhone application. Every file is compressed with a Binary for the ARM architecture and can only be installed on an iPhone, ipad or an iPod Touch. It is mostly encrypted with Apple’s FairPlay DRM Technology.

    IPA代表iOS App Store软件包。 它具有.ipa扩展名,代表存储iPhone应用程序的iPhone应用程序存档文件。 每个文件都使用用于ARM体系结构的二进制文件压缩,并且只能安装在iPhone,ipad或iPod Touch上。 它主要使用Apple的FairPlay DRM技术进行加密。

    33. Which JSON Framework is supported by iOS?

    33. iOS支持哪种JSON框架?

    SBJSON is the framework that is supported by iOS. It is a generator and a JSON Parser for Objective-C. SBJSON provides flexible APIs and also makes JSON handling easier.

    SBJSON是iOS支持的框架。 它是Objective-C的生成器和JSON解析器。 SBJSON提供了灵活的API,也使JSON处理更加容易。

    34. Explain Inheritance.

    34.解释继承。

    Inheritance is an Object Oriented Programming concept. It allows to develop a New Class that is reusable and can extend the behaviour that is defined in another class.

    继承是一种面向对象的编程概念。 它允许开发一个可重用的新类,并可以扩展在另一个类中定义的行为。

    35. How is it possible to improve Battery Life during execution of an Application?

    35.在执行应用程序期间如何改善电池寿命?

    An application is notified whenever the Operating System transfers the application between Background and Foreground. It helps in extended battery life by determining the exact functionalities in the background and thereby also helps in a better User Experience with the Foreground Application.

    每当操作系统在Background和Foreground之间传输应用程序时,都会通知该应用程序。 通过确定背景中的确切功能,它有助于延长电池寿命,从而也有助于在前景应用程序中获得更好的用户体验。

    36. Does iOS supports Multi-Tasking functionality?

    36. iOS是否支持多任务功能?

    Multi-Tasking functionality is supported from iOS versions 4 and the later ones. Multi-Tasking is a feature that enables applications to remain in the background until it is re-launched or terminated.

    iOS版本4和更高版本支持多任务功能。 多任务是一项功能,使应用程序可以保留在后台,直到重新启动或终止它为止。

    37. What is Xcode?

    37.什么是Xcode?

    Xcode is a combination of Software Development Tools developed by Apple for developing applications. It is an Integrated Development Environment (IDE). It is primarily used for development of iOS and OS X applications.

    Xcode是Apple为开发应用程序而开发的软件开发工具的组合。 它是一个集成开发环境(IDE)。 它主要用于开发iOS和OS X应用程序。

    38. Explain Layer Objects.

    38.解释层对象。

    Layer Objects are Data Objects that represent the Visual Content. They are used to render the Content. Layer Objects can be customized and these custom layer objects are used to implement Complex Animations and other types of sophisticated Visual Effects.

    图层对象是代表可视内容的数据对象。 它们用于呈现内容。 可以自定义图层对象,并且这些自定义图层对象用于实现复杂动画和其他类型的复杂视觉效果。

    39. What framework is used to construct application’s iOS User Interface?

    39.使用什么框架来构建应用程序的iOS用户界面?

    The UIKit framework is the Framework that is used to develop application’s User Interface for iOS. UIKit framework provides Views, Drawingg Model, Controls, Event Handling, Windows specifically designed for a touch screen interface.

    UIKit框架是用于为iOS开发应用程序的用户界面的框架。 UIKit框架提供了Views,Drawingg模型,控件,事件处理,专门为触摸屏界面设计的Windows。

    40. Explain Interfaces.

    40.解释界面。

    Interfaces enables defining features as small groups of closly related properties, methods, and events. It defines the events, properties and methods that classes can implement.

    通过接口,可以将功能定义为几组紧密相关的属性,方法和事件。 它定义了类可以实现的事件,属性和方法。

    41. Enlist Frameworks for Cocoa Touch.

    41.征募可可接触的框架。

    The Frameworks developed for Cocoa Touch are listed as follows: 1. Foundation 2. UIKit

    为Cocoa Touch开发的框架如下: 1.基础 2. UIKit

    42. How can you declare a variable in Swift?

    42.如何在Swift中声明变量?

    Var num = 42

    变量数= 42

    43. What is the Maximum byte-size for a push notification to Apple Server?

    43.向Apple Server推送通知的最大字节大小是多少?

    The maximum memory size is 256 Bytes to send a push Notification to Apple Server.

    最大内存大小为256字节,用于向Apple Server发送推送通知。

    So this was the list of some important IOS interview questions and answers. If you found any information incorrect or missing in above list then please mention it by commenting below.

    这就是一些重要的IOS面试问题和答案的列表。 如果您在上面的列表中发现任何不正确或缺失的信息,请在下面的评论中提及。

    翻译自: https://www.thecrazyprogrammer.com/2015/11/ios-interview-questions-and-answers.html

    ios面试问题

    展开全文
  • iOS面试必看题

    2019-07-23 09:40:05
    001_尚学堂__iOS面试题_命名规范 002_尚学堂_iOS面试题_strongweakcopy上 003_尚学堂_iOS面试题_strongweakcopy下 004_尚学堂_iOS面试题_可变属性问题 005_尚学堂_iOS面试题_selfsuper 006_...
  • IOS面试

    2015-05-06 23:13:01
    对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了。但是对于一个希望拥有技术力基础的企业的iOS...

    不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的好机会。对于iOS和Mac开发来说,因为本事还算比较新,企业对于这方面的开发者需求也比较大,所以面试时的要求可能并不是很高,一般能知道一些Cocoa和OC的基本知识也就认为可以了。但是对于一个希望拥有技术力基础的企业的iOS或者Mac开发来说,两到三个顶尖的熟练技术人员,带领一些还较为初级的开发者,共同完成项目应该是比较常见的构成。

             Cocoa特别是CocoaTouch的开发,上手可以说十分容易,但是背后隐藏的细节和原理却很丰富。一方面对于基础不够熟练和清晰(比如从一个AppDelegate开始用代码构建ViewController,或者清晰地说明栈和堆之类的概念),另一方面对于更进阶的开发知之甚少(比如多线程、网络异步处理或者Core开头的各种框架等等)。这些内容十分重要,但是可能现在一般的iOS开发者或多或少都在这些问题上存在薄弱。在这里我整理了一份面向于较高层级的iOS开发者的面试题目的问题清单,列出了十个应聘Leader级别的高级Cocoa/CocoaTouch开发工程师所应该掌握和理解的技术。这份列表没有提供标准答案,因为这些问题本身就没有标准答案。随每个人对这些内容的认识的不同和理解的差异,可以有不一样的答案。但是最基本地,如果面对的是一名资深的Cocoa开发者,至少期望能得到的答案都是“接触过”,并且能结合自己的经验说个七七八八,达到互相能明白意图和方法的地步。能够在其中两三个领域有不错的见解和具体的阐述的话,那是更好。这种对于知识覆盖面和深度的考察很能真实反映出开发者的技术水平。如果清单里的很大部分内容都是完全没接触过和没听过的话,那可能距离资深Cocoa开发这样一个阶段还尚有距离了。

    那么,面试开始。

      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,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架。

          以上10个问题对于初级或者刚接触iOS的开发者来说,肯定是过于难了。想要答出全部问题,可能需要至少两到三年的Cocoa/CocoaTouch开发经验。而如果想要有所见地的回答,可能需要更长的时间和经验。这些问题对于技术的积累会是一个很好的考察,因为如果没有对这些问题中涉及的内容有过实际使用和体会的话,是很难较完整和全面回答这些问题的。同时,因为这些问题并不像ABCD的客观题有标准答案,表现的是应聘者的理解,所以提问者也必须具备必要的材料或者知识,以应对可能的讨论。

          在为团队寻求高级别的开发工程师或者Leader类的职位时,这些问题的回答会是对应聘者技术深度和广度的一个有效的考察。同样地,如果你的团队在Cocoa/CocoaTouch上比较偏重,但是技术团队的No.1的工程师却不能很好地回答这些问题的话,可能也会是需要检讨技术层的一个信号。

    展开全文
  • 视频面试是通过牛客网进行的,以下是记下来的各轮面试题,对于一些iOS基础知识就不做解答了。 一面 正在跳转(iOS高级开发技术交流裙 进裙密码:123) 1、用递归写一个算法,计算从1到100的和。 func sum(value: Int...

    背景

    面的是快手X3岗位,视频面试,不支持周末,但是可以选择晚上时间。视频面试是通过牛客网进行的,以下是记下来的各轮面试题,对于一些iOS基础知识就不做解答了。

    一面 正在跳转(iOS高级开发技术交流裙 进裙密码:123)
    1、用递归写一个算法,计算从1到100的和。

    func sum(value: Int) -> Int {
        if value <= 0 {
            return 0
        }
        var number = value
        return value + sum(value: number - 1)
    }
    // 计算过程
    let result = sum(value: 100)
    print(result)
    

    写完算法之后又围绕着问了几个问题,都是算法基础:正在跳转(iOS交流裙 密码:123)
    算法的时间复杂度是多少
    递归会有什么缺点
    不用递归能否实现,复杂度能否降到O(1)

    2、property的作用是什么,有哪些关键词,分别是什么含义?
    3、父类的property是如何查找的?
    4、NSArray、NSDictionary应该如何选关键词?
    5、copy和muteCopy有什么区别,深复制和浅复制是什么意思,如何实现深复制?
    6、用runtime做过什么事情?runtime中的方法交换是如何实现的?
    7、讲一下对KVC合KVO的了解,KVC是否会调用setter方法?
    8、__block有什么作用
    9、说一下对GCD的了解,它有那些方法,分别是做什么用的?
    10、对二叉树是否了解?

    面试官是想接着问这方面的问题的。我当时说了不了解,然后就没有后续了。

    二面 (iOS高级开发技术交流裙 进裙密码:123)

    1、ARC和MRC的区别,iOS是如何管理引用计数的,什么情况下引用计数加1什么情况引用计数减一?
    2、在MRC下执行[object autorelease]会发生什么,autorelease是如何实现的?
    3、OC如何实现多继承?

    这个当时没有答好。其实借助于消息转发,protocol和类别都可以间接实现多继承。

    4、对设计模式有什么了解,讲一下其中一种是如何使用的。
    5、有没有哪个开源库让你用的很舒服,讲一下让你舒服的地方。
    6、一张100*100,RGBA的png图像解压之后占多大内存空间。
    5、算法题 正在跳转(iOS高级开发技术交流裙 进裙密码:123)

    题目:给定一个个数字arr,判断数组arr中是否所有的数字都只出现过一次。

    这个并没有要求写出来,说是提供思路就行了。我当时给的方案是在便利数组的时候,用一个字典把便利的元素存起来,如果在后面的便利过程中新元素在字典中存在过就说明,有重复数字出现。时间复杂度是O(n)。
    当时也问了有没有办法进行优化,我当时想到了将数组转成Set,然后和原数组比较,两个集合的数量是否变化。
    7、因为我跟他介绍自己Swift用的多一些,然后问了些Swift跟OC的区别,各自的优缺点。
    8、为什么离职,有什么职业规划。

    三面 正在跳转(iOS高级开发技术交流裙 进裙密码:123)

    1、给定一个Int型数组,用里面的元素组成一个最大数,因为数字可能非常大,用字符串输出。
    输入: [3,30,34,5,9]
    输出: 9534330
    
    这个是leetcode的179题,难度中等。面试官让先说思路,再去做题。事先说一下这个题我没有做过。当时的思路是用冒泡法进行排序,排序的前提是将较少位数的数字进行循环补齐,例如3和30的比较,变成33和30的比较,34和4的比较变成34和44的比较,然后将结果从大到小整合成字符串输出。
    但是做题是却发现没那么简单,位数的补齐对于2位和3位数的比较还需要求位数的最小公倍数,将他们都转成6位数才能比较。在挣扎了5分钟做了就做罢了。

    后来再去做这道题,其实这就是一个排序而已,只不过他的规则是按高位优先级更高的原则,而这一点跟字符串的比较保持一致,如果再加一些Swift的高阶函数,就可以写成:

    func largestNumber(_ nums: [Int]) -> String {
        let sort = nums.map {"\($0)"}.sorted { (lStr, rStr) -> Bool in
            return lStr + rStr > rStr + lStr
        }
        let result = sort.joined()
        if result.prefix(1) == "0" {
            return "0"
        } else {
            return result
        }
    }
    

    在这里插入图片描述

    2、项目中有这么一个方法func findfile(dir: String suffix: String) -> [String] ,可以通过输入文件夹目录,和后缀检索出所需的文件。

    例如需要在某个文件中检索txt文件或者mp4文件,那就传入dir和suffix就行了。现在又有一些需求,例如需要检索utf8格式的txt或者h264编码的mp4,也会有一些例如查找最近一周更新过的文件这样的需求,你如何优化这个类,让它满足这些情况?

    我首先想到的是这么多需求不可能一个方法就完成,需要根据不同场景拆出不同的方法,但是这些同属于文件操作,会有一个共同使用的方法就是检索文件。这个方法需要传入文件目

    录,然后递归的返回当前目录所有文件路径。外部不同场景的调用逻辑就用一个enum完成,不同值对应相同范围的不同种类。

    面试官比较关注内部共用的文件检索怎么写,他说子文件如果过多怎么办,如何优化。我有点懵,查找文件至少是要遍历一遍的,子文件过多,这个应该是没法优化的啊。中间卡了一段

    时间,后来他给了提示说是不是可以用block实现,将文件路径返回出去,由外部决定当前文件是否可用,最终外部的调用类是这个样子。

    //我的方案
    //func findDir(_ dir: String) -> [String]
    //block方案
    func findDir(_ dir: String, block: ((String) -> Bool))
    

    我想来确实没毛病,用block返回内容至少不会将该目录的所有文件都由一个对象持有,而前面一堆的铺垫其实也都是为验证block方案的好处。

    其实事后想下这个问题没啥难的,这种写法自己也有写过,但当时就是没想起来,可能前面一圈的铺垫给我带偏了吧,说亏也不亏,以后多多努力吧。

    总结

    整体来看,快手的面试题跟我在别处看到的iOS面试题对比要简单些。一面主要是基础知识,二面考察更全面一些,更多让自己谈一些对技术的理解,三面则是更偏实践一些。

    算法虽然三轮都有,但相对比较简单,即使写不出来,有思路也是可以的。当然写出来肯定是加分项,所以大家准备面试时,应该都看一下。算法相关的,排序,数组,二叉树,这几类是重点。

    (iOS高级开发技术交流裙 进裙密码:123)在这里插入图片描述

    展开全文
  • iOS面试宝典

    2019-07-23 09:28:02
    资源名称:iOS面试宝典资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • ios 面试

    2015-01-24 16:27:48
    100个iOS开发/设计面试题...移动开发iOS面试经验分享盘点GitHubApp StoreSwift 摘要:本文作者对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,以甄
  • 慕课网iOS面试实战项目总结:iOS面试题思维导图与回答
  • iOS面试题整理

    2020-11-20 17:59:12
    iOS面试题整理 在线查看地址:https://ios.nobady.cn iOS面试相关问题整理,做这个的初心是希望能巩固自己的基础知识,当然也希望能帮助更多的开发者,如发现答案不准确或者不完整的可前往 Github 提交完善。 主要从...
  • ios面试

    千次阅读 2014-08-12 12:35:27
    1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;...
  • IOS 面试

    千次阅读 2014-06-23 19:28:21
    推荐:世界杯韩国超漂亮性感女球迷美国女性如何“卖身”赚钱 × 登录注册 zhihuashi121的博客 http://blog.sina.com.cn/u/1743478923 [订阅][手机订阅] 首页博文目录图片关于我 ...zhihuashi121
  • iOS面试资料全集

    2019-07-23 09:26:56
    资源名称:iOS面试资料全集资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • iOS面试问题精选下载

    2020-08-24 16:51:59
    iOS面试问题精选下载
  • ios面试题目

    2020-10-10 16:12:36
    1、事件响应链是如何传递的? ... 事件传递:从UIApplication开始,到window,再逐步往下层(子视图)找,直到找到最深层的子视图,其为first responder。用到的判断方法是pointInside:withEvent和hitTest:withEvent...

空空如也

1 2 3 4 5 ... 20
收藏数 6,680
精华内容 2,672
关键字:

ios面试