面试

作者: mayday2024 | 来源:发表于2015-05-17 00:49 被阅读59次
    266.jpg Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

    函数递归?

    Paste_Image.png Paste_Image.png

    99表
    int main(int argc, const char * argv[])
    {
    // 外循环控制行数
    for (int i = 1; i <=9; i++) {
    // 内循环控制列数
    for (int j = 1; j <= i; j++) {
    // 输出结果
    printf("%d * %d = %d\t", i, j, i*j);
    }
    // 换行
    printf("\n");
    }
    return 0;
    }

    //写一个函数,如果找到返回key的索引,如果没有找到就返回-1

    折半查找
    int binarySearch(int array[],int length,int key)
    {
    int low = 0;
    int high = length - 1;

    while (low <= high) {
        int mid = (low + high) / 2;
    

    // 如果找到了就直接返回找到的索引(下标)
    if (array[mid] == key) {
    return mid;
    }else if(array[mid] > key){
    high = mid - 1;
    }else{
    low = mid + 1;
    }
    }
    return -1;
    }

    编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
    int main(int argc, const char * argv[])
    {
    int unit = 0; //个位
    int decade = 0; //十位
    int hundred = 0; //百位
    int count = 0; //总个数
    for (int i = 100; i < 1000; i++) {
    unit = i%10;
    decade = (i%100)/10;
    hundred = i/100;
    if (i == (hundredhundredhundred + decadedecadedecade + unitunitunit)) {
    printf("%d\n", i);
    count++;
    }
    }
    printf("count = %d\n", count);
    return 0;
    }

    6、用obj-c写一个冒泡排序 -(void)mySort:(NSMutableArray *)mutArray {
    id tmpObj = nil;
    unsigned long flag = mutArray.count-1;//flag :最大脚标 while (flag > 0) {
    int k = flag;
    flag = 0;
    for (int j = 0 ; j < k ; j++) {
    int order = NSOrderedAscending;// 或 NSOrderedDescending
    if ([[mutArray[j] description] compare:[mutArray[j+1] description]] == -order) {
    tmpObj = mutArray[j]; mutArray[j] = mutArray[j+1]; mutArray[j+1] = tmpObj; flag = j;
    } }
    } }
    延伸:C语言的冒泡排序: (1)冒泡法对一维数组中的元素进行排序 void sort(int arr[],int arr_len)
    {
    for(int i=0;i<arr_len-1;i++)//外层循环 {
    for(int j=0;j<arr_len-1-i;j++)//借助j实现一趟的次数 {
    if(arr[j]>arr[j+1]) {
    int temp=0; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp;
    } }
    } }

    •什么是Runloop
    *Runloop是程序启动后建立的一个主运行循环,保证程序不退出,而且还负责监听事件,如触摸,定时器、网络请求完成。
    *没有事件时,进行休眠。
    *有事件时,被唤醒,接收事件,找到最合适的处理对象。

    •主线程和子线程的运行循环
    1)主线程和子线程都有运行循环
    2)主线程的运行循环是工作的 主线程中是有autoreleasepool的
    3)使用GCD和NSOperation创建的线程会添加自动释放池
    4)使用NSThread的线程不会自动添加autoreleasepool
    NSThread和NSObject如果在后台创建了autorelease对象 "需要使用自动释放池 否则会出现内存泄漏",所以前面的代码要加上autoreleasespool

    •NSObject的多线程方法注意事项
    *NSObject的多线程方法使用的是NSThread的多线程技术
    *而NSThread的多线程技术不会自动使用@autoreleasepool
    *在使用NSObject或NSThread的多线程技术时,如果涉及到对象分配,需要手动添加@autoreleasepool

    KVO - 即:Key-Value Observing
    KVC NSKey Value Coding

    相关文章

      网友评论

          本文标题:面试

          本文链接:https://www.haomeiwen.com/subject/ujykqttx.html