- 相关推荐
程序员面试的注意事项
程序员面试有哪些注意事项需要牢记?下面就由小编给大家介绍介绍吧,希望对大家有帮助。
Top 1 诚实,不要虚张声势
自信地回答问题,如果你不知道,那就坦诚地说“我不知道,但是我认为……”。知之为知之,不知为不知,不要理直气壮地讲述一个错误的答案,这会让面试官怀疑你前面那些正确的答案搞不好也是胡诌的,功亏一篑。虽然这句措辞也不是万金油,但是却能显示你积极思考的能力和永不放弃的态度。对面试官提出的所有问题都要做一番努力,不要一句“我不知道”就轻易打发。
Top 2 做好写代码的准备
如果要你写代码,那就要小心了,千万别忘记遵循基本规则。我常听那些应聘人员一脸茫然地说“呀,我忘记语法了……”,我一看,原来是忘记for循环的语法了。我们不希望你在面试的时候记得所有的东西,但是一些基本的,像循环、if条件、主方法、异常,这些要是忘记了,太不应该了。看到这里,如果你一时间也没法想起这些,不妨复习一下。写代码的时候要注重空格和缩进,那些字写的不好的可要注意了!
Top 3 做好解释项目的准备
软件工程师在写代码之前就应该对业务需求了如指掌。所以,你得能解释项目中一一对应的流程分别是什么。写个三四行代码就深层次解释一下,然后听听非团队人员的意见和建议。当局者迷,旁观者清。看看和客户交流的内部营销记录,找找线索。可以先找个朋友练习一下,确保自己能说到点子上。
一旦你解释完相关的业务需求,那么接下来面试官通常会问你关于这个项目的技术架构。所有你还必须准备架构图,以显示项目中的各个组件是如何相互作用的。架构图不需要任何特定的UML格式,但是你得确保画在上面的东西你都能解释得通。举个例子,如果你正在做一个可以显示数据是如何从用户界面到数据库的Web应用程序。那么你就得展示涉及的不同layers 、使用的技术,等等。而最重要的是,你应该清楚你正在做什么,不要讲到后来,乱七八糟,答非所问。
Top 4 将争论转换为交谈
即使你知道对方错了,也不要争论,试着以“ok,不过我不是很确定这是否正确,我回去再查阅一下”这样的言语继续话题。这能让双方都有一个愉快的心情。在面试的时候要认真听对方的话中之意,回答的时候要以自己的经验为依据,不要天马行空。
Top 5 事先对各种WHY做好准备
大公司的面试关于问“Why?”的肯定很多,搞不好甚至是以“Why?”开头,以“Why?”结束,一路“Why?”下去。例如经典的Java问题“String和StringBuffer的区别是什么?”,后面往往还会有“为什么String……?”又或者“如何才能……?”事先做好如何回答这些“How?”和“Why?”问题的准备。
Top 6 讲述自己最大的成就
在自己以往的工作中,总会有个你认为是最棒的成就。你得学会将这个成就描绘得“天花乱坠”,让面试官觉得这是一个超级不平凡的成绩。所以准备一个励志生动又可信的故事以展示你的能力是如何一步步让你完成那个艰巨的任务的。之所以要事先准备好是因为担心事到临头你搞不好会忘东忘西有所遗漏不说,最怕就是语言不连贯,让面试官无法理解。
面试的问题
1、自动释放池是什么,如何工作?
当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放 池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。
2、说一说static 关键字
(1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,
因此其值在下次调用时仍维持上次的值;
(2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明
它的模块内;
(4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。
3、什么事单件实例
Foundation 和 Application Kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。举例来说,NSFileManager 和NSWorkspace 类在使用时都是基于进程进行单件对象的实例化。当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配 和初始化。单件对象充当控制中心的角色,负责指引或协调类的各种服务。如果类在概念上只有一个实例(比如NSWorkspace),就应该产生一个单件实例,而不是多个实例;如果将来某一天可能有多个实例,您可以使用单件实例机制,而不是工厂方法或函数。
4、说说Objective-C,有哪些优点哪些不足
objc优点:
1) Cateogies
2) Posing
3) 动态识别
4) 指标计算
5)弹性讯息传递
6) 不是一个过度复杂的 C 衍生语言
7) Objective-C 与 C++ 可混合编程
不足:
1) 不支援命名空间
2) 不支持运算符重载
3)不支持多重继承
4)使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。
5、#import和#include的区别,@class代表什么?
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import,而#import比起#include的好处就是不会引起重复包含。
6、线程和进程的区别?
进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个 进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序 健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
7、Object-C的内存管理?
1.当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1.当你不再使用该对象时,你要负责向该对象发送一条release或autorelease消息.这样,该对象将在使用寿命结束时被销毁。
2.当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理.如果你打算在一段时间内拥有该对象,则需要保留它并确保在操作完成时释放它。
3.如果你保留了某个对象,你需要(最终)释放或自动释放该对象.必须保持retain方法和release方法的使用次数相等。
8、属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
readwrite 是可读可写特性;需要生成getter方法和setter方法时
readonly 是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变
assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;
retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;
copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时。
nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic
【程序员面试的注意事项】相关文章:
面试的注意事项11-23
面试的注意事项05-19
程序员面试心得09-28
面试必备面试技巧注意事项11-25
关于面试的注意事项与面试礼仪11-23
面试注意事项08-04
面试注意事项08-03
外企面试的注意事项11-25
面试后的注意事项12-20
跳槽面试的注意事项11-28