面试记录

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


目录

  • 面试记录
      • 目录
    • 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 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 
* -explain 获取用户银行卡列表 * @Date 2017/2/24 9:50 */
OkHttpRequest fetchUserBankCard();}

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

public interface IBankCardAddView extends IBaseView {    /**     * Created by Aloha 
* -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. Android(安卓)View (4) View的绘制过程
  2. Android绘制平面上的多边形
  3. 这样做动画交互,一点都不费力!
  4. Android画图之Bitmap(一)
  5. android绘制圆角图片
  6. Android(安卓)自定义View——拖动选择时间控件
  7. Android系统中读写和显示图片
  8. Android中View绘制流程
  9. Android中BaseAdapter的用法分析与理解

随机推荐

  1. Android事件分发机制 详解攻略,您值得拥有
  2. Android APP设计加载使用gif动图需要注意
  3. Android中textView自动识别电话号码,电子
  4. 《Android/OPhone 开发完全讲义》样章和
  5. 菜鸟初学者学习Android心得
  6. 从零开始--系统深入学习android(理论-开发
  7. Android[中级教程] 深入剖析Android消息
  8. 基于安卓手持设备的手机应用编程——用户
  9. Android之根据经纬度查询位置地址名称
  10. android直接在桌面生成快捷方式