您的位置:首页 > 职场人生

面试记录

2018-03-06 12:01 295 查看

面试记录

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

目录

面试记录

目录

0305

0311

0312

0319

0321

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 重新生成出身份证并存储到本地。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android