以下是某公司的iOS面试题没答对,真成菜狗了..

1.retainCount引用问题

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
  label.text = @"retailCount";
  [label autorelease];
  NSLog(@"----label------%ld",(long)[label retainCount]);// ----label------1
  [self.view addSubview:label];
  NSLog(@"----label------%ld",(long)[label retainCount]);//----label------2

第一处因为label到autorelease处释放,所以retainCount为1,
第二处因为self.view对label的持有,所以retainCount+1为2;

2.

unsigned int i = 0x123456ab;
unsigned char *pi = (unsigned char *)&i;
for (int i=0; i

输出结果为:AB563412
0x123456ab;要占四个字节,12 34 56 ab 分别占一个字节,计算机存储是反向输出的。字节序---大尾端---小尾端 。

3.

char *j = "jdms\0";
printf("\n%lu,%lu",strlen(j),sizeof(j));

输出结果:

4,8
看此博客有详细解释

3.解释可重入和线程安全,举例说明

看此博客有详细解释

4.memmove算法实现

看此博客有详细解释

5.下题是否有误,如何改正

void swipe(int *p1,int *p2){
int *p;
*p = *p1;
*p1 = *p2;
p2 =p;
}
答案:错误
解析:指针没有初始化,改正办法:
int p;申明了一个指针变量p,要使用p,必须让p指向一个内存单元,否则,p就是野指针你有两种方法。

1.栈
void swap(int *p1, int *p2)
{
int x;//自动变量x属于栈
int *p=&x;  
*p=*p1; 
*p1=*p2;
*p2=*p;
}
这种方法纯属蛋疼。
2.堆
void swap(int *p1, int *p2)
{
int *p=(int*)malloc(sizeof(int));  //堆
*p=*p1; 
*p1=*p2;
*p2=*p;
free(p);
}

使用完p后,记得释放p指向的内存,某些情况下还需将p指向NULL,防止悬挂指针。
free(p);
p=NULL;

6.下题是否有误,如何改正

如下代码,遍历数据,删除符合条件的元素,是否能实现。

 NSMutableArray *enumlator = [NSMutableArray arrayWithObjects:@"5",@"3",@"2",@"1",nil];
for (NSInteger i=0; i

答案:不能(本以为遍历一个可辨的数组是错误的,看来我想错了)
解决方案:倒叙遍历即可解决

解决方案一:倒叙遍历数组

 NSMutableArray *enumlator = [NSMutableArray arrayWithObjects:@"5",@"3",@"2",@"1",nil];
for (int i = enumlator2.count -1;i >= 0;i--) {
    NSString *object = [enumlator objectAtIndex:i];
      if(一定条件){
          [enumlator removeObject:object];
      }
}

解决方案二:使用谓词,应该可以实现

NSArray *NeedArray = [enumlator2 filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
    NSLog(@"evaluatedObject:%@",evaluatedObject);
    NSLog(@"bindings:%@",bindings);
    [enumlator2 removeObject:evaluatedObject];
    return YES;
}]];
NSLog(@"whatYouNeedArray%@",enumlator2);

你可能感兴趣的:(以下是某公司的iOS面试题没答对,真成菜狗了..)