zoukankan      html  css  js  c++  java
  • 2016.6.24 同花顺 2017届实习生招聘笔试专场(提前批)+2016.7.4同花顺新大楼面试

    笔试

    由于我报的岗位是 服务端--开发工程师 IOS--开发工程师 所以我的题目靠前有很多网络编程的题目

    1.写出在Linux下网络开发时,用到的系统API,列出函数名称和对应参数,写出用法更好

    • 1 getservbyport
    • 2 getservent

    2.网络socket编程中,假如服务端瞬间write了3次数据,客户端可能read了一次数据。假如我要求客户端区分出3次数据,说说你的做法。

    3.bug排查,当iOS程序push某个UIviewController控制器后台程序崩溃或者程序卡死,请描述排查该问题的思路

    4.给出代码,写出运行结果

    #include<iostream>
    #include<stdio.h>
    #include <string>
    using namespace std;
    int main()
    {
    unsigned short A = 10;
    printf("~A=%u
    ", ~A);
    char c = 128;
    printf("c=%d
    ",c );
    }
    
    代码结果为:~A=4294967285
    			c=-128
    
    
    #include<iostream>
    #include<stdio.h>
    #include <string>
    using namespace std;
    
    class A{
    public:
    	int m;
    	void printClassInfo{cout<<"A
    ";}
    	void printInfo{cout<<m<<endl;}
    };
    
    int main()
    {
    	A *pObject =0;
    	pObject->printClassInfo();
    
    	pObject->printInfo();
    	return 0;	
    }
    

    面试

    • 首先自我介绍下

      我介绍自己年级,能够实习的时间,自己平时怎么学习iOS的,我的优点。 腾讯和同花顺都是这样开头,看来必须要准备一个amazing的模板

    • iOS 的内存管理机制是怎么样的

      这是第一个问题,我有点蒙,沉默了一段时间,看到对面两个面试官脸色有些不好,最后面试官给了一点提示。自己对这一块要系统整理下知识点。

    • iOS 的函数调用机制是怎么样的
      这个也沉默了,后来我回答了runtime一些特点,面试官问我 meg_send 函数的参数有哪几个,这个没回答上来。

    • iOS 有哪些关键字

      这个基础题,答的不连贯

    • 浏览器输入网址后的发生了什么

      我回答了DNS解析,ip地址,向服务器发送post请求。

    • 你遇到问题了怎么办

      Google sof 问QQ群 身边的人 主管。

    • --block的用法

      最近刚刚在eoc 2.0上面看过了 这个没回答上来 很气。

      Blocks可以访问局部变量,但是不能修改
      如果修改局部变量,需要加__block

         __block int multiplier = 7;
         int (^myBlock)(int) = ^(int num) {
         multiplier ++;//这样就可以了
         return num * multiplier;
         };
      

      2、如果局部变量是数组或者指针的时候只复制这个指针,两个指针指向同一个地址,block只修改指针上的内容。如:

        NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil];
        NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1];
        [mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop){
        [mArrayCount addObject:[NSNumber numberWithInt:[obj length]]];
        }];
      
            NSLog(@"%@",mArrayCount);
      

      例子里面确实没有修改mArrayCount这个局部变量啊。mArrayCount是一个指针,指向一个可变长度的数组。在block里面,并没有修改这个指针,而是修改了这个指针指向的数组。换句话说,mArrayCount是一个整数,保存的是一块内存区域的地址,在block里,并没 有改变这个地址,而是读取出这个地址,然后去操作这块地址空间的内容。

      这是允许的,因为声明block的时候实际上是把当时的临时变量又复制了一份,在block里即使修改了这些复制的变量,也不影响外面的原始变量。即所谓的闭包。

      但是当变量是一个指针的时候,block里只是复制了一份这个指针,两个指针指向同一个地址。所以,在block里面对指针指向内容做的修改,在block外面也一样生效。

        __weak __typeof(&*self)weakSelf =self; 等同于
      
        __weak UIViewController *weakSelf =self;
      
        为什么不用__block 是因为通过引用来访问self的实例变量 ,self被retain,block也是一个强引用,引起循环引用,用__week是弱引用,当self释放时,weakSelf已经等于nil。
      

    扩展:NSTimer注意避免循环引用的地方,需要找个合适的时机和地方来 invalidate timer

        在引用计数的环境里面,默认情况下当你在block里面引用一个Objective-C对象的时候,该对象会被retain。当你简单的引用了一个对象的实例变量时,它同样被retain。但是被__block存储类型修饰符标记的对象变量不会被retain
    
        注意:在垃圾回收机制里面,如果你同时使用__weak和__block来标识一个变量,那么该block将不会保证它是一直是有效的。 如果你在实现方法的时候使用了block,对象的内存管理规则更微妙:也是(__weak与__block区别:)
    
    1、如果你通过引用来访问一个实例变量,self会被retain。
    2、如果你通过值来访问一个实例变量,那么变量会被retain
    
    • View运行启动后的生命周期是什么样的

      基础题 答得不太好

    • 做过的项目可以在手机上查看吗

      下次应该去的时候手机上应该准备好

    • 数组和链表的区别

      内存和存取,插入一些特点和区别

    • 期望的薪资多少

      9K 语气不是太好 估计要高了

    • 对加班怎么看
      不知道怎么回答此类问题,一五一十的说出了自己的想法。

    • 接触iOS 开发多久了

      一年多

    • 写了多少行代码

      5万

    • 有什么问题问我的

      问了部门大概多少人,做什么的

  • 相关阅读:
    super与this的比较
    队列学习小结
    最左原则
    show processlist
    循环
    打印偶数
    发布模块
    eval函数
    文件
    模块
  • 原文地址:https://www.cnblogs.com/zhuyaguang/p/5615162.html
Copyright © 2011-2022 走看看