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.写一个二分查找...
#面经##校招##安卓工程师#
全部评论
同学hr面完了?
点赞 回复
分享
发布于 2020-08-28 17:24
我昨天面的,可惜没看到你的面经,咱俩的问题一模一样。。。。。。。
点赞 回复
分享
发布于 2020-09-16 17:45
阿里巴巴
校招火热招聘中
官网直投

相关推荐

1 10 评论
分享
牛客网
牛客企业服务