公司 | 杭州异世界 |
---|---|
面试时间 | 2022.02.22 |
面试时长 | 7min |
面试结果 | 未OC |
简单自我介绍
面试官问:平时怎么学习iOS的?是用的swift吗?看得懂OC吗? 技术题: 1.UIButton的响应者链是怎么样的?iOS 从UIButton学习响应者链及相关技术_王颜华的博客-CSDN博客
答:UIButton->UIView(subView没有可忽略)->UIView(superView)->UIViewController->UIWindow(keyWindow)->UIApplication。
事件的传递和响应的区别是:事件的传递从上到下(父控件到子控件),事件的响应从下到上(顺着响应者链条向上,子控件到父控件)。
2.说一下UIView和CALayer联系
CALayer在UIView背后提供更加丰富灵活的图形 *** 作,UIView作为CALayer的代理更加快速地帮CALayer显示一些常用的UI元素并提供交互。UIView是所有视图的基类,CALayer是图层类。事实上,UIView和CALayer是平行的层级关系。每一份UIView都有一个CALayer实例的图层属性,视图的责任就是创建并管理图层,以确保当子视图在层级关系中被添加或者被移除的时候,与它们相关联的图层也同样在层级关系树中有相同的 *** 作。区别
CALayer无法响应事件。UIView和CALayer的最明显区别在于他们的可交互性,即UIView可以响应事件,而CALayer不可以。原因可以从这两个类的继承关系上看出。UIView是继承自UIResponder的,决定了UIView类及其子类能够通过响应链(iOS通过视图层级关系来传递触摸事件)接收并响应用户事件。而CALayer直接继承于NSObject类,所以它不清楚具体的响应链,也就无法响应用户事件。分工不同。UIView侧重于对显示内容的管理和整体布局,而CALayer侧重于显示内容的绘制、显示和动画。所属框架不同。UIView类属于UIKit.framework框架的,UIKit框架主要就是用来构建用户界面的。CALayer类是属于QuartzCore.framework框架的,而且CALayer是作为一个低级的,可以承载绘制内容的底层对象出现在该框架的。两个嵌套的for循环的时间复杂度
答:O(n^2)(有点弱智)
3.iOS里有几种访问权限?具体说明一下。Swift中一共有五个级别的访问控制权限,从高到低依次是open,public,internal,fileprivate,private。它们遵循的基本规则是:高级别的变量不允许被定义为低级别变量的成员变量,比如一个private的class内部不允许包含public的string值,反正低级变量可以定义在高级别变量中。
open:具备最高访问权限,其修饰的类和方法,可以在任意模块中被访问和重写。public:权限仅次于open,和open唯一的区别是:不允许其他模块进行继承和重写。internal:默认权限,只允许在当前的模块中访问,可以继承和重写,不允许在其他模块中访问。fileprivate:修饰的对象只允许在当前的文件中访问。private:最低级别访问权限,只允许在定于的作用域内访问。 4.反问环节:您认为在iOS代码开发中最难的一点是什么?
答:性能的不断升级。
贵公司平时工作的配合机制是什么?
答:利用Git协作。
二公司 | 谈烁科技 |
---|---|
面试时间 | 2022.02.28 |
面试时长 | 25min |
面试结果 | 已OC |
没有自我介绍,介绍了学了哪些课,挑了一些数理基础课,提到了C++和计算机网络,面试官很感兴趣,问计算机网络考了多少分,还问绩点怎么样。
1.怎么走上iOS开发这条路的? 答:初试(大一下学期在iPhone11上玩伪代码的快捷指令) → 对Swift感兴趣 在iPad上玩playground → 加入iOS Club 系统化学习。 2.Swift和学过的C++进行一个比较 答:都是面向对象的。脑子里只记得面向对象和函数式编程是有区别的。 追问1:什么是面向对象?答:不太清楚啊。参考答案:面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
追问2:为什么要用面向对象编程呢? 答:是为了特定地实现功能?面试官说函数式也行啊。参考答案:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活。 3.谈谈学习Swift的体会 答:“?”和“!”,可选型和强制解包。 追问1: 什么情况用optional,用optional会带来什么困扰? 答:值可能不太明确,对判空有干扰。 4.项目相关 (1)做这个项目的历程是怎样的?答:一开始是用约束拉的,之后用SnapKit做优化。
(2)constraints能随着用户需求变动吗? 答:不可以(❌)面试官纠正:其实是可以的,把它的约束拉到controller里面设置成变量就行。 (3)都用了什么控件? 答:自上而下依次是UILabel,UITextField(自己糊涂了,其实也是UILabel的,面试官也糊涂了,跟着问了好久。。。),UIButton. (4)怎么响应Button指令?答:通过touchUpInside实现的,面试补充了gesuture类
追问1:touchUpInside是什么动作?
答:是触摸屏幕拿起后响应的
(5)怎么按一下给Button改一个颜色?答:提到了用tag来区分,用UILabel的addTarget来扩展一个方法,用color属性实现。
追问1:怎么 *** 作这个方法呢?(有点疑惑)面试官提示是touchdown。
追问2:那怎么实现渐变呢?(好像看过,说用外部框架吧,也没记住面试官怎么说的)
(6)你还用过哪些控件?答:TableView
追问1:TableView是怎么样的?
答:一开始记岔了,以为是navigation,很自信说是过渡。面试官疑惑,后来反应过来原来是列表。
追问2:你是怎么用的?需要设置哪些属性?
答:蹦出了indexPath和row啊这些属性
追问3:tableview是以行为主,那你知道以列为主的控件吗?
答:不知道。面试官提示是collectionView.
追问4:tableview两个很关键的协议是什么?
答:delegate和datasource。
追问5:怎样填充datasource?
答:用Core Data数据库和SQLite数据库。
追问6:用过HTTP请求进行网络数据的收集吗?
答:这个还真没试过(其实之前试过,失败了,但是没啥 *** 作印象)
沸点工作室是什么啊 答:就是大家一起系统地学习技术的工作室(怪我没介绍好) 反问环节CS-Notes (cyc2018.xyz)
2022届斩获BAT+TW外企Offer的双非硕士菜鸡学姐的秋招分享 - 知乎 (zhihu.com)
推荐这篇博文,反问环节有借鉴一点,个人觉得提到的问题很有水平。
问题1:请问作为iOS实习生,在贵公司工作的一天是怎样的呢? 答:公司的主要业务主要是承接一些小型简单的App制作,这对实习生是十分友好的,一上来就能上手做任务,对人能力得到锻炼 问题2:请问针对刚刚的面试,您对我今后的iOS学习有什么建议吗? 答:关键要在实践中学习。不要局限于那些小打小闹的练手项目,要向成熟的,企业型的,完备的项目进行挑战。 三面试公司 | 万物心选 |
---|---|
面试时间 | 2022.03.04 |
面试时长 | 20min |
面试结果 | 未OC |
答:暂时是没有的。啊~其实是有的,和风天气API请求JSON数据并且提取!(下次注意❗已经两次没答出来啦)。
但是用过本地化存储core data数据库。
从你学习iOS以来只学了Swift吗? 答:是的,还学了一下SwiftUI。 有用过final修饰符吗? 答:暂时没有呢。 iOS里有什么列表的控件吗? 答:UITableView和UIConlletionView。 如果要显示10行,那页面最多只能显示6行数据,那么需要加载6行还是110行呢? 答:6行就可以了,UITableView的复用原理,reuserIdientifier标识一个唯一的复用标识符。避免反复的创建和销毁元素。 反问环节 问题1:请问作为iOS实习生,在贵公司工作的一天是怎样的呢? 答:前期实习期会有相关的考核(记不太清了),前三个月会组织培训,系统学习一些企业的基础知识和使用,后期和产品经理对接,写一些小需求。 问题2:针对刚刚的面试,您对我今后的iOS学习有什么建议? 答:大量从网络教程学习的话会比较零散,建议找一些书比如《iOS开发宝典》之类的,会比较系统的由浅入深地学习以及掌握一些底层知识;兼顾学习一下OC,目前很多公司都是用OC的。 四面试公司 | 阿里巴巴 |
---|---|
面试时间 | 2022.03.08 |
面试时长 | 50min |
面试结果 | 应该凉了 |
详细对比IB开发与纯手码开发的优劣。 - 董铂然 - 博客园 (cnblogs.com)
SnapKit和autoLayout自动布局的关系Swift自动布局SnapKit的详细使用介绍 - 简书 (jianshu.com)
什么是autoLayout?iOS 中 Auto Layout(自动布局)_krzover的博客-CSDN博客
AutoLayout是一种基于约束的,描述性的布局系统。可以让你通过创建元素之间关系的数学描述来布局应用程序的用户界面。关键字(元素,关系,约束,描述)
什么是CocoaPods?答:是为Xcode项目提供依赖管理的工具。iOS开发中不可避免地要使用各种第三方库,cocoaPod的出现使得我们可以**节省设置和更新第三方开源库的时间。**使用CocoaPods后只需要在Podfile写入需要用的第三方库。然后执行CocoaPods的命令,就会自动地将这些第三方库的源码下载到项目对应的Pods文件夹中,并且为项目设置好对应第三方库需要依赖的系统库和编译参数等。
iOS相关 Swift和你学过的python,C++比起来各有什么优劣? 如何优化卡顿的UITableView 追问:如何优化一个单纯的页面网络请求? 知道runtime吗? Runtime有什么作用呢? 知道runloop吗? struct和class有什么区别? 知道函数式编程吗? 用过defer修饰符吗? 知道代码运行成一个项目要经历哪些阶段吗?面试官说没学过汇编原理吗?确实没有呢
首先iOS应用程序默认的启动过程是:
①.先加载Main函数
②.在Main函数里的 UIApplicationMain方法中,创建Application对象 创建Application的Delegate对象
③.创建主循环,代理对象开始监听事件
④.启动完毕会调用 didFinishLaunching方法,并在这个方法中创建UIWindow
⑤.如果有storyboard,会根据info.plist中找到应用程序的入口storyboard并加载箭头所指的控制器
⑥.设置UIWindow的根控制器是谁,如果Storyboard和手码都设置了根控制器,手码设置的根控制器会把手码的给替换了。
⑦.显示窗口
如果是纯代码的项目将不会有第五步。会直接在didFinishLaunching方法中找到UIWindow设置的根控制器,通过创建时的类型来决定控制器的类型。如果项目中使用了interface Builder的图形化界面,那么在程序启动过程中会经历第五步,并且需要将storyboard中的控制器与自己建立的类相关联。
算法相关 数组和链表的区别? 二叉树有哪几种遍历? 什么是二分查找? 二分查找的条件是什么? 五面试公司 | 贝格蓝斯 |
---|---|
面试时间 | 2022.03.09 |
面试时长 | 50min |
面试结果 | 不知道 |
iOS-Swift相比Objective-C有哪些优缺点 - 简书 (jianshu.com)
了解过泛型吗?聊聊 iOS 中的泛型 - 简书 (jianshu.com)
深拷贝和浅拷贝的区别? 怎么把一个模型变成深拷贝?iOS 模型数组深拷贝 - 简书 (jianshu.com)
了解block吗?iOS Block - 简书 (jianshu.io)
了解循环引用吗?同上,swift闭包
怎样避免循环引用呢? Category和Extension的区别 TableView的复用原理 了解过KVC和KVO吗? iOS实现多线程的几种方案? 关于网络请求的框架有了解过吗? 怎么实现给特定文字加下划线? 项目 简单介绍一下项目,怎么实现的? 封装计算类是什么? SnapKit和autoLayout什么关系? 页面怎么适配刘海屏? 天气APP里,你怎么请求网络数据? 算法 输入一个字符串怎样逆序输出 知道哪几种排序? 快速排序和堆排序那个快? 快速排序的时间复杂度? 数组和链表的比较 栈和队列的比较 用过递归吗? 五面试公司 | 即刻App |
---|---|
面试时间 | 2022.03.11 11:00 |
面试时长 | 30min |
面试结果 | 未知 |
答:仿照iOS原生的App,做过一些比如天气,计算器,提醒事项之类的。
做过哪些动画?答:做过渐变动画以及手势动画。
显式动画和隐式动画的区别?(没答上来)iOS 隐式动画和显式动画 - 作业部落 Cmd Markdown 编辑阅读器 (zybuluo.com)
隐式:==不需要初始化任何类,系统自己处理的动画属性。==之所以叫隐式,是因为并没有指定任何动画的类型。我们仅仅改变了一个属性,然后Core Animation来决定如何并且何时去做动画。
显式:自己创建一个动画对象并附加到layer上。
算法题:在一个单链表中,如果要删除倒数第n个元素怎么办? 目前为止做过最难的项目是什么? 加入工作室有做过一些项目吗? View和View间传值的方式还有那些? 用过即刻App吗? 自己封装过一些网络框架吗? 了解过哪些设计模式? frame和bound的区别? 了解过响应式编程吗? 五(二)面试公司 | 即刻App |
---|---|
面试时间 | 2022.03.15 |
面试时长 | 30min |
面试结果 | 已OC |
好像忘了,每个人都有导师,前几个月导师辅导,代码review。
在学校编程是为了满足自己可以完成的需求来开发,需要来企业实习和PM多交流迎接新的挑战。
六面试公司 | 阿里巴巴(盒马) |
---|---|
面试时间 | 2022.03.15 19:00 |
面试时长 | 45min |
面试结果 | 不知道 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)