2道通杀的iOS/Android笔试题

来源:互联网 发布:mac 命令行链接mysql 编辑:程序博客网 时间:2024/06/12 19:38

         最近在招聘iOS/Android开发工程师, 为了提高效率总结了2个笔试题。   能甄别出iOS非科班出身的人, 也能判断出大学的学习成绩。 难倒一大片iOS、Android、Java开发。。。

第一题:   请给出输出结果。

        int a[2][5] = {{1,2,3,4,5},{6,7,8,9,10}};

        int *ptr = (int*)(&a[0] +1);

        printf("%d,%d,%d,%d,%d", *(&a[0][0]+1), *ptr, *(ptr-1), sizeof(a), sizeof(ptr));

        结果: 2,6,5,40,4

分析:

       本题是考验C语言基础, 也可以考验初级iOS开发, 看他/她是否为iOS培训班出身的, 一般培训生都答不出此题。现在很多两三年工作经验的iOS开发都是假的, 培训机构教出来的, 在招聘时一定要注意!!! 如果此题答不上来, 再让他用C语言写个标准的最小宏#define MIN(a,b)  ((a)<(b)? (a):(b)) ,  还答不出来, 面试可以结束了微笑

       对于高级或资深Android开发, 本题同样可以问,因为大学里都学过C/C++。 我在面试某公司Android开发时,还被问到C++的拷贝构造函数形参里为什么有&疑问    高级/资深开发不仅要有技术深度,还要有一定的技术广度大笑。 &在C++里是与, 跟指针作用类似, 放在拷贝构造函数形参里是因为形参可以直接使用被引用对象的值, 不加&操作符无法拿到形参指向的对象。


第二题:   用泛型写个静态函数, 形参是类的.class, 返回值是这个类的对象。

参数答案:

    public static <T> T getClassExt(Class<T> clz){

          if (clz == null) {

                  return null;

           }

        T obj = null; 
        try {
            obj = clz.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return obj;

    }

或者

    public static <T> T getClassExt(Class<T> clz){

          if (clz == null) {

                  return null;

           }

        T obj = null;  //默认执行没有形参的构造函数, 得到实例
        Constructor<?>[] constructors = clz.getConstructors();
        if (constructors == null || constructors.length==0) {
             return null;
        }
        try {
           obj  = (T) constructors[0].newInstance();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }catch (IllegalAccessException e) {
            e.printStackTrace();
        }catch (InstantiationException e) {
            e.printStackTrace();
        }
        return obj;
     }

分析: 本题主要是考验泛型和反射,  我们用的fastjson或gson的解析函数JSon.parseObject,Gson.parse都用到了泛型和反射, 而且Android热修复、插件化都用到了反射,   高级/资深开发写不出来就说不过去了。   招聘java后台开发时也可以问这道题。

0 0