iOS收藏iOS面试题iOS之家

iOS基础问答面试题连载(一)-附答案

2016-11-15  本文已影响13381人  伯虔

该文章属于<简书 — Timhbw>原创,转载请注明: <简书社区 — Timhbw>http://www.jianshu.com/p/1ebf7333808d

iOSinterview.jpg

<简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案
<简书社区 — Timhbw>iOS基础问答面试题连载(二)-附答案
<简书社区 — Timhbw>iOS基础问答面试题连载(三)-附答案
<简书社区 — Timhbw>iOS基础问答面试题连载(四)

1.简单的描述下类扩展(extension)和分类(category)的区别?

2.简要的说明 UIView 的 frame 和 bounds 的区别

3.什么是控制器

4.简单的描述控制器的作用

5.简单的描述下 Storyboard 的作用

6.简述程序的启动原理

7.IBOutLet 有什么作用

8.IBAction 有什么作用

9.IBAction 和 IBOutLet 前缀IB是什么意思

10.简单描述父子控件


11. 解释下引用资源的时候每个选项的含义

12.UILabel如何设置自动换行

13.Character Wrap和Word Wrap的区别

14.contentMode的作用


15.initWithImage:的作用?

16.如何修改一个控件的 frame 属性?

17.如何抽取方法?

18.通过imageNamed:这个方法加载图片有什么特点?

19.开发如何选择 UILabel,UIImageView,UIButton


20.什么是自定义控件

21.通过代码如何自定义控件? 并且简单的描述下每一个步骤的理由?

22.什么是模型

23.通过 XIB 如何自定义控件? 并且简单的描述下每一个步骤的理由?

24.instancetype 和 id 的区别

25. @property的使用策略

26.懒加载的好处?


27.如果是通过 xib 或者 Storyboard 创建控件,初始化的操作可以在initWithFrame:方法中做吗?

28.通过 alloc/init 或者 alloc/initWithFrame 创建控件会不会主动加载xib?

29.用一个属性引用 UI 控件的时候为什么可以用 weak?

30.如何隐藏一个控件?

31.如何用按钮来实现图片上文字下的效果?

自定义按钮,实现
-(CGRect)titleRectForContentRect:(CGRect)contentRect
{
    // 返回文字的 frame
}
-  (CGRect)imageRectForContentRect:(CGRect)contentRect
{
    // 返回图片的 frame
}
- 自定义按钮,实现 layoutSubViews 方法调整按钮内部子控件的位置和尺寸

32.通过代码如何设置的内边距?

self.btn.contentEdgeInsets = UIEdgeInsetsMake(30, 30, 0, 0);
self.btn.titleEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);
self.btn.imageEdgeInsets = UIEdgeInsetsMake(0, -30, 0, 0);

33.如何处理图片拉伸问题?

创建可拉伸的图片对象
bg = [bg resizableImageWithCapInsets:UIEdgeInsetsMake(10,10,10,10) resizingMode:..];//平铺和拉伸
UIImage *bg = ...

34.在 Xcode 中如何配置拉伸图片?

35.KVC 的作用?


36.如何监听 scrollView 停止滚动?

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

37.定时器一般有什么作用?以及如何使用定时器

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo; 

38.scrollView的使用场景

39.UIScrollView 无法滚动的原因

40.scrollEnable和 userInteractionEnable 的区别

41.alwaysBounceVertical alwaysBounceHorizontal的作用

42.如何监听 UIScrollView 各种行为

43.代理的注意点

44.利用UIScrollView如何实现内容缩放

self.scrollView.maximumZoomScale = 2.0;
self.scrollView.minimumZoomScale = 0.2;

45.如何监听控件的行为?


46.通过autolayout如何实现UILabel包裹内容?

1.设置位置约束

47.什么是适配?

48.点和像素的区别

49.什么是Autolayout?

50.简单描述下Autolayout的2个核心概念约束和参照

51.Autolayout的警告和错误

52.通过代码添加约束的原则

53.什么是VFL

VFL全称是Visual Format Language,翻译过来是“可视化格式语言”

54.通过约束如何实现动画

[UIView animateWithDuration:1.0 animations:^{

    [添加了约束的view的父控件 layoutIfNeeded];

}];


55.性能优化的具体实现

56.UITableView如何展示数据?

// 多少组数据
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
// 每一组有多少行数据
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
// 每一行显示什么内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

57.UITableView的有哪几种样式

58.UITableViewController的认识

59.性能优化的思路

60.UITableView的性能优化的实现步骤

/**  每当一个cell要进入视野范围就会调用这个方法 */
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.定义一个重用标识
    static NSString *ID = @"tim";
    // 2.去缓存池取可循环利用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
    // 3.缓存池如果没有可循环利用的cell,自己创建
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
        // 建议:所有cell都一样的设置,写在这个大括号中;所有cell不都一样的设置写在外面
        cell.backgroundColor = [UIColor redColor];
        
    }
    // 4.设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"第%zd行数据",indexPath.row];
    
    return cell;
}

61.registerClass:的作用

62.通过注册的方法如何实现cell的重用

NSString *ID = @"wine";
- (void)viewDidLoad {
    [super viewDidLoad];
    // 注册ID 这个标识对应的cell类型为UITableViewCell
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 1.先去缓存池中查找可循环利用的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    
    // 2.设置数据
    cell.textLabel.text = [NSString stringWithFormat:@"%zd行的数据", indexPath.row];
    
    return cell;
}

63.如何监听tableView内部cell的点击事件


64.简述registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifierregisterClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier这2个方法的区别

65.如何计算一段文字的宽度和高度?

66.什么是自定义cell?

67.通过代码自定义cell能在ininWithFrame:方法中添加子控件吗?

68.通过代码自定义cell能在initWithStyle:reuseIdentifier:方法中计算子控件的位置和尺寸吗?

69.通过代码自定义cell,frame和Autolayout2中的方式有什么区别?

70.通过storyboard的方式是如何加载cell

71.字典转模型第三方框架的了解

72.设计框架需要考虑的问题

Github 链接下载

上一篇下一篇

猜你喜欢

热点阅读