zoukankan      html  css  js  c++  java
  • 时尚准备

    IOS面试准备,问题与技巧(最新重点推荐!)

    亲身经历,希望给需要这方面帮助的同学一些技巧。

    IOS面试准备,问题与技巧(最新重点推荐!)
     

    工具/原料

    • 准备+简历+着装+技巧

    方法/步骤

    1. 1

      前提:本文是给面试经验少的同学准备。

      首先,谈一下面试前的准备,分为两个方面;

      —:广泛阅览面试题目,找出重点题目,事先将答案记好。很多人以为自己做了几个项目,平时也有认真学习,不屑于去临时抱佛脚,这是大错特错的,很多你了解的东西到面试时会由于心理压力,而让你表诉不清楚,面试官听的似懂非懂,结果不言而喻,广泛阅读也让你在面试时显得涉猎广,游刃有余。

      二:重中之重,简历的书写,一份好的简历让你在别人开口前,印象分就多了20分。简历分三个方面:(1)个人信息(2)个人技能(3)项目经验;最后再加上点个人评价(一两句话即可,写一句“适应力强,自学力强”通用。切忌写一大堆。)

      这里有两个不错的模版:http://wenku.baidu.com/user/contribution?st=1

    2. 2

          好了,咱们准备工作已经完成。开始模拟面试(题目来自于我亲身经历)。

          面试核心思想:引导面试官(过程中体会,结尾总结)。礼仪,着装我就不说了,大家都是成年人。

           一般来说,如果你是同几个人一起面试,不要做第一个,原因很简单,你看看“我是歌手”你就明白了。当面试了好几个人后,第一个人的印象会降低,但凡a,b,c能力相差无几,b,c成功率要高过a,另一个重要原因是,后者通常会被问到a没答好的问题,你若是能答好,高下立判。至于答不好,面试官也觉得你们一个水平。

      Question 1:什么是面向对象。

          切入: 面试官要的不是答案本身,而是你的逻辑表述,理解,及应用。

          答:面向对象是区别于面向过程而言的,面向过程可以表述为:程序 = 算法+ 数据结构 ;面向对象可以表述为 程序 = 对象 + 消息。

      面向对象是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。 我们强调“万物皆对象”,我们抽象他们的属性与行为出来,以代码的形式展现。它有三个基本特征

      1.封装:

      封装就是,隐藏内部具体实现,只提供接口方法去访问。比如我们调用NSString类的,截取,拼接方法时,我们并不需要具体的算法,而只需调用相应方法。

      2. 继承:

      它是面向对象的程序中两个类之间的一种关系,即一个类可以从另一个类(即它的父类)继承状态和行为。继承父类的类称为子类。

      继承的优越性:通过使用继承,程序员可以在不同的子类中多次重新使用父类中的代码,使程序结构清晰,易于维护和修改,而子类又可以提供一些特殊的行为,这些特殊的行为在父类中是没有的 。

      3.多态:

      是指一个程序中同名的方法共存的情况,调用者只需使用同一个方法名,系统会根据不同情况,调用相应的不同方法,从而实现不同的功能。多态性又被称为“一个名字,多个方法”。

      以上的操作就是为了实现代码复用,实现代码的可移植性,灵活性,及低耦合,高内聚。

      一个问题居然写了这么多。。。。。。

    3. 3

      Question 2:简单介绍下你做的项目(这里就是开始引导面试官了,如果他不问这个问题,你就自己提出来,你要知道面试官其实也紧张,他不知道你会些什么,它可能懂得多,却也有无从下手的感觉,你递个枕头,他肯定会接的。)

        答:(选取你自己会的答,比如)我用到了自定义cell显示数据,使用三方框架AFNetworking,ASIHttpRequest,访问网络,拿到Jason,XML格式数据,然后进行一些数据的解析,本地存储,还有用xmpp实现的即时聊天,在本地用代理,通知,block进行类之间的通信,并植入了地图,实现了上拉加载,下拉刷新功能。。。。。

         看到没有,面试问题就出来了

      1.讲一下tableViewCell的复用问题(重点)

      这是指它的重用机制,先明白为什么要重用,无他:效率,内存。

      查看UITableView头文件,会找到NSMutableArray*  visiableCells,和NSMutableDictnery* reusableTableCells两个结构。visiableCells内保存当前显示的cells,reusableTableCells保存可重用的cells。

        TableView显示之初,reusableTableCells为空,那么tableView dequeueReusableCellWithIdentifier:CellIdentifier返回nil。开始的cell都是通过[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]来创建,而且cellForRowAtIndexPath只是调用最大显示cell数的次数。

        比如:有100条数据,iPhone一屏最多显示10个cell。程序最开始显示TableView的情况是:

        1. 用[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]创建10次cell,并给cell指定同样的重用标识(当然,可以为不同显示类型的cell指定不同的标识)。并且10个cell全部都加入到visiableCells数组,reusableTableCells为空。

        2. 向下拖动tableView,当cell1完全移出屏幕,并且cell11(它也是alloc出来的,原因同上)完全显示出来的时候。cell11加入到visiableCells,cell1移出visiableCells,cell1加入到reusableTableCells。

        3. 接着向下拖动tableView,因为reusableTableCells中已经有值,所以,当需要显示新的cell,cellForRowAtIndexPath再次被调用的时候,tableView dequeueReusableCellWithIdentifier:CellIdentifier,返回cell1。cell1加入到visiableCells,cell1移出reusableTableCells;cell2移出visiableCells,cell2加入到reusableTableCells。之后再需要显示的Cell就可以正常重用了。

      2.讲一下如何根据内容自定义cell行高

      以前用的三方RTLabel(非arc,int,NSInteger等问题,方法过老,版本无跟新,以弃用)

      // iOS6中的方法,在iOS7中弃用了

       /* CGSize textSize = [textArray sizeWithFont:[UIFont systemFontOfSize:16.0] constrainedToSize:CGSizeMake(280, 100000000) lineBreakMode:NSLineBreakByWordWrapping];*/   

       // 定义一个字典,里面还可以放入其他属性,不仅仅是字体大小    

      NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:15.0]};   

       //iOS7中提供的计算文本尺寸的方法    CGSize textSize1 = [textArray boundingRectWithSize:tableView.bounds.size options:NSStringDrawingUsesLineFragmentOrigin |     NSStringDrawingTruncatesLastVisibleLine  attributes:attribute context:nil].size;  

        NSLog(@"%f",textSize1.height);

          

      3.讲一下AFNetworking,ASIHttpRequest

      3.jason和xml的区别(重点)

      底层展现不同,比如jason用{}表示字典[]数组

      4.本地数据如何存储,用到些什么方法(重点)

      coredata,NSUserDefaultCenter,数据库,写入文件

      5.xmpp的理解

      6.代理,通知,和block的区别(重点)

      代理的目的是改变或传递控制链。允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的指针。可以减少框架复杂度。另外一点,代理可以理解为java中的回调监听机制的一种类似。

      代理通知区别,代理通常一对一,需要返回数据,通知一对多,不需要返回数据,block是ios4以后使用,方便,但是格式怪异。

      7.讲一下下拉刷新的实现

      8.用到过什么地图

      9.用过数据库吗,增删改查关键字(重点)

      10.自定义过什么控键吗

      11.viewcontroller的生命周期(重点)

      12.网络安全问题(重点)

      从get post 出发,谈到数据md5加密,协议安全,源代码安全

      13.数据库安全问题

      14.多线程问题

      15.数据结构,堆栈问题

      16.循环引用

      17.线程,进程

      17.最后一个arc非arc,自动释放池(重点)

    4. 4

          这些问题并不难,网上也是一搜一大把,大家一一对照着看。

         还是那句话,答案小学生都能背,重要是表述,一定要逻辑清楚,回答问题时应该不仅仅回答问题本身,理应做出适当延展,显露出你的知识面广泛。

    5. 5

      最后就到了考验情商时刻了。

      问题一:家住哪儿?

      这可不是与你拉近乎!这考虑的是你工作的稳定心,若是本地则好回答啦!“我就定居住在xxxx”。外地怎么办呢,也简单,就说我一直向往这个城市,大学时选取到了这个城市,以后也想定居在这。

      问题二:你家人知道你来我们这面试吗,他们怎么看,并接一问,定居在这,家人怎么看?

      回答:支持,支持,还是TMD支持!(自己编一下,我就不教坏小孩子了)

      问题三:有女朋友吗?

      回答:有,就在这个城市(稳定性问题,同一问)

      问题四:你对薪酬怎么看?

      回答:我觉得作为一个没有任何工作经验的应届生,首先想的应该是对自我能力的提升,因为对于一个新人来说,获取经验很重要,现阶段的我会把重点放到学习,融入公司上,而不是对薪酬的纠结上。我相信,公司会对我的能力有客观准确的评价,对于我为公司作出的贡献不会视而不见。

      问题五:你对加班怎么看?

      回答:我对加班是这样看的,既然来工作,就必须要有责任心,所以,如果是因为工作需要而加班,当然没问题。但是也应该注意提高工作效率,如果是因为工作拖沓而加班,那是不可取的。

      问题六:你还有什么问题吗?

      这个问题就显水平了,你说没有就太逗比了。

      回答:1 我作为一个刚出身社会的应届生,我现在很看重对自我能力的培养,请问公司对新员工的培养是怎样的?

      2.公司以后在我的工作这块上的发展侧重点。

  • 相关阅读:
    c语言l博客作业04
    【 js 基础 】【 源码学习 】 深浅拷贝
    【 js 片段 】如何组织表单的默认提交?【亲测有效】
    【 js 性能优化】【源码学习】underscore throttle 与 debounce 节流
    【 js 片段 】移动端适配简易步骤
    【 js 模块加载 】【源码学习】深入学习模块化加载(node.js 模块源码)
    【 js 片段 】点击空白或者页面其他地方,关闭弹框
    【 js 算法类】这么全的数组去重,你怕不怕?
    【 js 工具 】如何使用Git上传本地项目到github?(mac版)
    【 js 工具 】如何在Github Pages搭建自己写的页面?
  • 原文地址:https://www.cnblogs.com/dexjay/p/4783223.html
Copyright © 2011-2022 走看看