iOS开发面试题大全-7

  1. 应用程序如何省电?
     
    GPS定位在不需要的时候即使关闭
  2. 写一个递归方法:计算N的阶乘,然后将计算结果进行存储。以便应用退出后下次启动课直接获取该值。
     double fun(int n)
{
                   if(n==0||n==1)
                     return 1;
                   else
                     return n*fun(n-1);
}
  1. NSArray 和NSMutableArray的区别,多线程操作哪个更安全?
     NSArray不可变数组,NSMutableArray可变数组,NSArray更安全,多线程操作的时候记得加锁。
  2. 当前有一个数组,里面有若干重复的数据,如何去除重复的数据?(会几个写几个)
     
    最简单的方式,把数组里面的元素放到集合里面。
    也可以对数组进行排序,排序之后把数组里相同的元素删除掉
  3. isKindOfClass 、isMemberOfClass作用分别是什么?
     -(BOOL) isKindOfClass: classObj判断是否是这个类或者是这个类子类的实例
    -(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例
  4. 请写出以下代码的执行结果
NSString  * name = [ [ NSString alloc] init ];
name = @ Habb ;
[ name  release]
 
第一行:[ [ NSString alloc] init ]在堆区开辟一块内存,name指向堆区的这快内存,第二行:name指向常量区,这个时候堆区的内存没有释放也没有指针指向,会造成内存泄露
  1. 请分别写出SEL、id的意思?
     参照前面文档的动态类型和动态绑定
  2. iPhone 上,不能被应用程序直接调用的系统程序是什么?
     
    时钟、视频、指南针、天气、计算器、备忘录、提醒事件、股市
      http://blog.sina.com.cn/s/blog_7dc11a2e01016qve.html
9 、以.mm为拓展名的文件里,可以包含的代码有哪些?c和obj-c如何混用
 obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码, 处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj- c的代码,因为cpp只是cpp
2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题
3)在cpp中混用obj- c其实就是使用obj-c编写的模块是我们想要的。
如果模块以类实现,那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西,包括#import cocoa的。实现文件中,即类的实现代码中可以使用obj-c的东西,可以import,只是后缀是mm。
如果模块以函数实现,那么头文件要按 c的格式声明函数,实现文件中,c++函数内部可以用obj-c,但后缀还是mm或m
10 、说说如何进行后台运行程序?
 
     1、检查设备是否支持多任务
2、applicationDidEnterBackground和applicationWillEnterForeground(UIApplicationDidEnterBackgroundNotification和UIApplicationWillEnterForegroundNotification)
3、声明你需要的后台任务(在Info.plist中添加Required background modes键值:audio、location、voip)
11 、sizeof和strlen的区别和联系
    sizeof是运算符,strlen是函数
     char str[20]="0123456789";
     int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
     int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。
12 、sprintf,strcpy,memcpy的功能?使用上要有哪些要注意的地方
  char*strcpy(char *dest, const char *src);
其对字符串进行操作,完成从源字符串到目的字符串的拷贝,当源字符串的大小大于目的字符串的最大存储空间后,执行该操作会出现段错误。
int sprintf(char*str, const char *format, ...)
函数操作的源对象不限于字符串:源对象可以是字符串、也可以是任意基本类型的数据。主要是实现将其他数据类型转换为字符串
void *memcpy(void*dest, const void *src, size_t n)
实现内存的拷贝,实现将一块内存拷贝到另一块内存。该函数对源对象与目的对象没有类型现在,只是对内存的拷贝
  1. 自己写函数,实现strlen功能
      判断的时候注意“\0”
  2. 写一个代码片段输入一个字符串“20130322152832 , 输出一个NSDate类型的对象,打印该对象输出2013-03-22 15:28:32
      NSDateFormatter  @“yyyy-MM-dd HH:mm:ss”
  3. 找错误
a :void test1()
{
 char string[10];
 char* str1 = "0123456789";
 strcpy( string, str1 ); //注意strcpy特点
}
b:void GetMemory( char **p, int num )
{
 *p = (char *) malloc( num ); //分配了内存空间,但是没有释放
}
void Test( void )
{
 char *str = NULL;
 GetMemory( &str, 100 );
 strcpy( str, "hello" );
 printf( str );
}
  1. 用变量a写出以下定义
      a 、一个整型数   int a;
      b 、一个指向整型数的指针 int *a;
      c 、一个指向指针的指针,它指向的指针是指向一个整型数  int **a;
      d 、一个有10个整型数的数组  int a[10];
      e 、一个有10个指针的数组,该指针是指向一个整型数的  int *a[10];
      f 、一个指向有10个整型数数组的指针  int (*a)[10] ;
      g 、一个指向函数的指针,该函数有一个整型参数,并返回一个整型数 int(*a)(int);
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值