iPhone开发/ObjectiveC 面试题目

在做iPhone开发过程中,收集了一些常见到问题,可以用作面试题目,供大家参考

  1. ObjC中,与alloc语义相反的方法是dealloc还是release?与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?
  2. 在一个对象的方法里面:
    self.name = “object”;

    name =”object”
    有什么不同吗?
  3. 这段代码有什么问题吗:
    @implementation Person
    – (void)setAge:(int)newAge {
    self.age = newAge;
    }
    @end
  4. 什么是retain count?
  5. 以下每行代码执行后,person对象的retain count分别是多少
    Person *person = [[Person alloc] init];
    [person retain];
    [person release];
    [person release];
  6. 为什么很多内置类如UITableViewController的delegate属性都是assign而不是retain的?
  7. 定义属性时,什么情况使用copy,assign,和retain
  8. autorelease的对象是在什么时候被release的?
  9. 这段代码有什么问题,如何修改
    for (int i = 0; i < someLargeNumber; i++)
    {
    NSString *string = @”Abc”;
    string = [string lowercaseString];
    string = [string stringByAppendingString:@”xyz”];
    NSLog(@“%@”, string);
    }
  10. autorelease和垃圾回收机制(gc)有什么关系?
  11. IPhone OS有没有垃圾回收(gc)?
  12. 什么是Notification?
  13. 什么时候用delegate,什么时候用Notification?
  14. 什么是KVC和KVO?
  15. Notification和KVO有什么不同?
  16. KVO在ObjC中是怎么实现的?
  17. ViewController 的 loadView, viewDidLoad, viewDidUnload 分别是在什么时候调用的?在自定义ViewController的时候这几个函数里面应该做什么工作?
  18. ViewController 的 didReceiveMemoryWarning 是在什么时候被调用的?默认的操作是什么?

Python 面试常见问题

 

这里总结一些Python的常见问题,也是Python面试经常提到的问题,它们都是比较 pythonic 的问题,最关键的,它们都是你应该能回答的问题,如果这些问题对你来说没有什么难度,请发一份简历到 join@mapiz.com

这里并不试图给出答案,很多问题只是看回答者对Python的理解,如果你对某个问题不够清楚,just google it. 如果你对很多问题都不清楚,你应该去读一下 Python in a nutshell

  • 数据类型相关
    list与tuple的区别
    dictionary与set的区别
  • 你知不知道Python的for语句后面可以跟一个else,它是什么意思?
  • list comprehension 是怎么回事,为什么要用它?为什么不用它?
    (我一直记不住对应的中文叫什么,列表推导?)
    即:
    [ x*x for x in somelist ]
    其中 somelist 是一个list。
    这行代码构建了一个list,其每个元素是somelist里面每个元素与自身做*运算
    复杂一点的,还可以:
    [ somefunction(x) for x in somelist if anotherfunction(x) ]
    即,可以用anotherfunction 过滤 somelist
  • 什么是 tuple 解包赋值?

    a,b = somefunction()
    要实现这个效果,somefunction应该返回一个tuple,在赋值时Python会自动解包。
    当然,这不仅仅限于函数返回值的情况,像
    a,b=(“value1”,"value2“,) 也是可以的
  • 类似 __foo__ 这样的东西是什么玩意?
    这是python里面的特殊函数或属性,常见的有
    __name__
    __main__
    __file__
    __get__()
    __set__()
    这些你都应该知道。
  • iterators/generators 怎样实现一个 iterator 或 generator ?
  • map/reduce/sum ?
    如果你第一次听到 map reduce 是从Google著名的分布式框架,没有关系,因为现在的计算机教育已经本末倒置,这不是你的错,但是如果你没有去研究一下它为什么叫 MapReduce , 这就是你的错了。如果你现在是第一次见到 map reduce ,赶紧去研究一下,我想你很可能对函数式编程一无所知。
  • lambda 是什么东西 ?
  • 有没有听说过 decorator ?
  • 函数定义时在参数前面加上 * 或 ** 是什么意思? 函数调用时在参数前面加上 * 或 ** 又是什么意思?
  • 怎样实现类的静态方法?
  • __new__ 与 __init__ 有什么区别?
  • “class Foo”  与  “class Foo(object)” 有什么不同
  • 文件操作
    Python里面有个非常简单的文件按行操作方式
    for line in open(file_name):
          print line

    但是要注意 line 是包含行尾的 \n  的

  • 异常处理
    python里面到处都是异常,这是Python的设计哲学,如果你打算学习Python,请将异常变成你的思维方式。
    你可能很容易学会  try … except .. 和  try … finally..  但是 try … except … else 是什么意思?
  • 对类库的熟悉程度
    Python 的强大很大程度上来源于其无数强大的类库,熟悉类库的实用总是对实际的工作帮助甚大。
    类库问题也是一个很重要的常见问题,如:
    实现xxx功能,有哪些类库可以用?
    常见的应该了解的类库大概有:
    正则表达式类库 re
    系统类库 os, os.path
    日期时间 datetime
    多线程 Queue
    单元测试 doctest, unittest
    日志 logging ( 我非常喜欢这个库 )
    命令行参数处理 optparse ( 这个库太棒了 )
    命令行框架 cmd ( 用这个库你会发现 写Python 真的是一种享受 )
    网络 urlparse, urllib, curl, httplib,socket
    服务器 SocketServer ( python 自己含有一个简单的socket服务器!而且支持多种网络模型(tcp/udp, thread/process)! )
    XML/HTML
    解析 xml.dom, xml.sax, BeautifulSoup
    还有很多很多…
    当然,你没必要全都用过它们,但是你应该知道它们的存在,除非你愿意花上几个星期来实现一个本该几分钟就完成的功能。

最后,请相信我,Python in a nutshell 是本好书,它能解决以上几乎所有的问题,当然,它能解决的问题远不只以上这些。