面试体验比较好,面试官表情不够丰富,许愿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) 回帖