面试记录

面试记录

记录下这几天面试的经验。


目录

0305

1、能否在子线程中创建子线程,有没有什么影响?
2、Loop 一直在循环从MessageQueue中遍历Message,为什么不会造成线程阻塞?
3、用户触摸界面,焦点传递分发机制
4、View 绘制流程,onMeasure,onDraw,onLayout。onMeasure 总共会执行了多少次?
5、Eventbus 实现,源码分析
6、强引用,弱应用,内存泄露
7、安卓逆向,hook,ele加壳脱壳,xposed框架,gdb/IDA等调试工具的使用
8、设计模式的使用,单例模式,装饰者模式,工厂模式,观察者模式等

0311

面试大佬话语记录:
1、程序猿要想在市场上生存得久点,就要有自己的技术壁垒。这个壁垒,也许是比较冷门的,或者是门槛比较高的,或者是你拥有别人所没有的天赋(比如美感,数学)
2、就我目前工作经验,界面这块是没有啥问题的,但是这些东西,可替代性太高,壁垒不够强。可以往技术深度发展,或者是别人不会的。比如安卓的兼容性,稳定性(安卓各版本,多机型),逆向安全
3、技术壁垒:深度,友盟/TalkingData,兼容性,安全性
4、App的稳定性,测试,黑白灰测试
5、安卓逆向,灰度安全,源码hack

0312

1、线程安全,单例是线程安全的吗
2、Java 4种对象引用

逆向学习——
1、smali语法,静态分析,动态调试APK
2. hook技术,AOP开发,Xposed框架
3. IDA、OD、GDB、OllyDbg、WINDBG等逆向分析工具
4. Smali、ARM指令集、熟悉DEX、ELF加壳脱壳、常见公开加密算法
5. NDK、JNI编程
6. 各版本API技术差异
7. python/perl/ruby/php等任意一类脚本语言,熟悉移动平台开源安全框架

职业发展目标——
这里写图片描述

0319

1、加密(MD5、AES)
2、MVVM 单元测试
3、图片矩阵处理
4、反射方法

0321

项目要点总结——
1、身份证拍摄——
⑴、Camera+SurfaceView(SurfaceHolder、SurfaceHolder.Callback)实现相机预览与拍摄界面
⑵、Paint+Canvas计算身份证长宽比并绘制遮罩层,Paint.setXfermode(DST_OUT) 图像混合模式,中间绘制阴影,与整个绘制区域不相交位置取反变成遮罩层。
⑶、Camera.PictureCallback 获取相机拍摄照片回调,Matrix 将照片旋转到正常方向,身份证长宽比计算结合Rect裁剪位置, createBitmap 重新生成出身份证并存储到本地。
2、Mvp架构——
⑴、view层抽象,抽象V和P,用泛型传入并相互依赖

public abstract class BaseActivity<V extends IBaseView, T extends BasePresenter<V>> extends AppCompatActivity implements IBaseView {
    protected abstract T CreatePresenter();

    protected T mPresenter;
    mPresenter.attachView((V) this);
}

public abstract class BasePresenter<V extends IBaseView> {
    private Reference<V> mView;

    public V getView() {
        if (mView != null) {
            return this.mView.get();
        }
        return null;
    }
}

⑵、Model 层模型行为,可定义多个行为模型,循环利用

public interface IBaseModel {}
public interface IBankCardModel extends IBaseModel {

    /**
     * Created by Aloha <br>
     * -explain 获取用户银行卡列表
     * @Date 2017/2/24 9:50
     */
    OkHttpRequest fetchUserBankCard();
}

⑶、抽象View 层行为成接口,P层回调数据操作

public interface IBankCardAddView extends IBaseView {

    /**
     * Created by Aloha <br>
     * -explain 添加银行卡
     * @Date 2017/1/19 11:48
     */
    void receiveAddUserBankCard(int status,String message);
}

3、AES加密——
⑴、服务端获取加密密钥,本地用特定约束规则加上密钥得到真正密钥,再使用该密钥加密密码、验证码等,传输给服务端
⑵、Paint+Canvas计算身份证长宽比并绘制遮罩层,Paint.setXfermode(DST_OUT) 图像混合模式,中间绘制阴影,与整个绘制区域不相交位置取反变成遮罩层。
⑶、Camera.PictureCallback 获取相机拍摄照片回调,Matrix 将照片旋转到正常方向,身份证长宽比计算结合Rect裁剪位置, createBitmap 重新生成出身份证并存储到本地。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值