首页 > 8月18日 作业帮 Android客户端开发 二面面经
头像
秃然的自我
编辑于 2020-08-18 20:25
+ 关注

8月18日 作业帮 Android客户端开发 二面面经

面试体验比较好,面试官表情不够丰富,许愿hr面
自我介绍...
没问项目...

Java:
1.Java类加载机制能简单聊聊吗
2.两个classLoader加载同一个类,那么这个类最终是由哪一个加载呢?(类加载的双亲委派模型)
3.Java四大引用类型

Android:
1.自定义View需要重写那些方法?(结合实际需求,需要滑动则重写onTouchEvent,需要控制自身布局则重写onMeasure,onLayout)
2.Handler消息机制
3.如何进行布局优化呢?(嵌套层级,过渡绘制,ViewStub,include)
4.性能优化呢?(布局优化,主线程避免执行耗时任务,内存抖动)   ps:内存抖动可以引申到view的onDraw,避免在onDraw方法中创建对象,可详细讲原因
5.进程通讯的方式有哪些?(管道,匿名管道,socket,共享内存,信号量,Binder,SharedPreference,ContentProvider)
6.听你说SharedPreference是线程不安全的,为什么线程不安全呢?
7.听说过Handler里的IDLEHandler吗?(没听说过)

网络:
1.tcp udp的区别
2.三次握手四次挥手
3.tcp如何实现断点续传?(保存下载的offset,下次进入的时候恢复,传输层则是tcp的syn和ack的字段相关)
4.网络模型是啥样的?

代码题:    ps:都挺简单的,大家看看就行
1.String的引用传递相关
2.设计模式相关
补全一个观察者模式
1)让这个Observer对象只调用一次
2)调用一次之后将自己remove掉
import java.util.Scanner;
public class ObserverTest {
    ArrayList<Observer> list = new ArrayList();

    public static registerObserver(Observer o) {
        if(o == null)
            throw new NullPointerException("")
        list.add(o);
        o.setReference(this);
    }

    public static unRegisterObserver(Observer o) {
        if(o == null)
            throw new NullPointerException("")
        list.remove(o);
    }

    public void notifyAllObservers(){
        for(Observer o : list){
            o.update(o);
        }
    }
}

abstract class Observer {
    public abstract void update(Observer o){
        
    }
}

class T1 extends Observer {
    private WeakReference<ArrayList<Observer>> reference;
    private boolean used = false;
    
    void setReference(ArrayList<Observer> list){
        reference = new WeakReference<>(list);
    }
    public void update(Observer o) {
        if(used)
            return;
        //...
        
        
        used = true;
        ArrayList<Observer> list = reference.get();
        if(list != null)
            list.remove(this);
    }
}
2.写一个二分查找...

更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐