面试经验

啥也不说了,面试美图秀秀面的都是泪,自己水平还欠缺太多,面完赶紧回来整理一下,收拾一下心情,把面过的记住的题目记录一下:

本人情况:
我投的是android程序开发的职位,自己是应届生,不算校招把,算是社招环节(错过了校招真是哭的一逼啊…)。

笔试题目:
1.单例模式实现:

//方法一
public class Singleton{

    private Singleton(){}
    private static  class Instance{
        private static Singleton newInstance=new Singleton();
    }
    public void getInstance(){
        return Instance.newInstance();
    }
}

//方法二

public class Singleton1 {  
    private Singleton1() {}  
    private static final Singleton1 single = new Singleton1();  

    public static Singleton1 getInstance() {  
        return single;  
    }  
}  

2.Listview里的getView()方法的实现,尽可能优化滑动速度:
1.使用viewholder
2.当页面进行滑动时候不进行图片的加载

面试官有问道,为什么viewholder要使用static方法,我没答出来,尼玛啊,心好累

答案:这里设置ViewHolder为static,也就是静态的,静态类只会在第一次加载时会耗费比较长时间,但是后面就可以很好帮助加载,同时保证了内存中只有一个ViewHolder,节省了内存的开销。

3.找出字符串中的仅出现过一次的第一个字母:
这个想了一下,最直观的方法就是直接暴力扫描,算法复杂度为O(n2),肯定不能这样啊,于是想了一下,自己构造一个简单的哈希表进行存储所有出现的字符串的次数,扫描一遍字符串存入哈希表中,最后再便利一遍字符串就可以找到第一个出现为一次的字符了,复杂度为O(n),空间花费为O(1)。

接下来就是面试的环节了。

1.listview跟scrolleView有什么区别,什么时候使用Listview,什么时候使用scrolleView?
这问题问的…Listview主要用于数据的展示,像列表,布局设置大部分相同的可以使用listview,而scrollView更偏向于页面的展示,可以横滑以及下滑。
后来上网,网上也查不到答案,哪位大神能跟我讲讲,这题真的是懵了逼了.

2.自己实现过自定义动画么?
在属性动画的基础上,自己倒是做过几个动画的效果,结果问的是自定义动画,我靠这题也倒下了,回去得自己在琢磨琢磨了。

3.fragment在切换的时候fragment的运作过程,即加载情况?
这题我不太好形容,问的主要是fragment加载机制把,好像,当时也没答出来,有点懵。
给链接吧,鸿阳大神的博客,得狠心学习一下了。
http://blog.csdn.net/lmj623565791/article/details/37970961
http://www.cnblogs.com/xiaoran1129/p/3154832.html
最好还是要看源码

4.触摸事件的原理?
这个倒不是问的,而是在面试官看我项目的时候,我讲的,不懂得网上查看吧,这里就不详细解释了。

你用过线程池么,如何使用线程池,什么情况下使用线程池?
贴链接吧:
http://www.cnblogs.com/dolphin0520/p/3932921.html

5.用过surfaceView么?
没用过。。。。。,恶补之:
如何使用:
http://www.jb51.net/article/53458.htm
老罗的:
http://blog.csdn.net/luoshengyang/article/details/8661317/

6.了解drawable下的标签么?
我仅仅回答上shape下的东西,其实还有很多诸如selector和layer-list模糊过个概念。
贴链接:http://blog.csdn.net/brokge/article/details/9713041

7.看过android设计规范么,了解过新出的一些像appBarLayout,RecycleView等相关的控件么?
这个我只说自己跟着代码敲过了一遍,没有去深入的了解如何实现等等。

面试官话题一转,很随性。。。,聊聊java把,(当时内心处于很慌的状态,自己android答得那么烂,转了话题突然有点懵懵的),然后就开始了java的问答:

8.来说说泛型把,用过泛型么,

[1]ArrayList<T> al=new ArrayList<T>();指定集合元素只能是T类型
          [2]ArrayList<?> al=new ArrayList<?>();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法
          [3]ArrayList<? extends E> al=new ArrayList<? extends E>();
            泛型的限定:
               ? extends E:接收E类型或者E的子类型。
               ?super E:接收E类型或者E的父类型。

IBM分享:http://www.ibm.com/developerworks/cn/java/j-djc02113/

9.反射机制了解么?

百度百科:http://baike.baidu.com/link?url=l_oXbuA9kjDxFU2hNZxFCKqan4vJ9RI-UbxQ7Fnp5y_93MrzyQ3qRGUqavmccVYf9U3CvJZMJFkarQD6NvooD_

10.面试官手写了一道题:

public class A{
    public static int a=0;
    public int b=0;
    {
        b=1;
    }
    static{
        a=1;
    }
}

public class B extend A{
    public int c=0;
    {
        c=1;
    }
    public B(){
        super();
    }
}

问依次执行的顺序,这个考察的是静态变量>静态代码块>实例变量>构造代码块>构造方法的知识,所以输出结果是:

a=0
a=1
b=0
b=1
c=0
c=1

总结一下自己的不足:
1.java基础还是没有打好,准备再过一遍,跟着上面的补缺补漏,顺便研究一下java编程思想。
2.android的东西只知道其用法而不知道他为什么那么做,对于程序员来说是不行的,如果你想成为一个好的程序猿,必须要了解为什么那么设计,为什么那么做。
2.学无止境,不要太沾沾自喜了,觉得自己很牛,记得天外有天,人外有人。

就说到这,撸代码进修去了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值