面试回答技巧

1. 没有接触过的问题,直接告知没有了解过,不能强答
2. 先答基本的,优化或进一步的部分等待面试官发问再答

3. 掌握主动权
(1)我们的项目中没有用 X ,用 Y 也能实现这个功能(引导到其他话题)
(2)比起 X 我更倾向 Y(有自己的见解),X 的原理是…

4. 如何讲好项目经历:
(1)背景(让对方能听懂)
(2)冲突(要有技术难度,顺便可引导对方陷入自己熟悉的技术领域)
(3)强调自己的作用(解决问题的过程)
(4)要有收益(结果,是否解决了问题,最好可量化)

5. 见解型问题

为什么dex文件比class文件更适合移动端?

  • 针对移动端优化的个人见解
  • 内存有限
  • 安装包体积不宜太大
  • 频繁 I/O 操作会带来卡顿

Java的数组为什么不支持泛型?

  • 泛型的类型擦除机制
  • Java泛型设计上的取舍

你遇到过哪些经典的设计模式使用案例?

  • 使用设这个计模式的背后,所要解决的代码问题是什么?
  • OOP原则

6. 意识型问题

如何实现一个能加载海量数据的列表?

  • 内存优化意识
  • 内存优化三板斧(回收、复用、压缩)

堆内存治理的主体方向是:减少新申请内存大小 + 减少已分配内存大小

在这里插入图片描述

  • 避免 String 拼接导致内存抖动
  • Bitmap 图片相关,图片格式,压缩重采样,缓存(LRU, Glide),Bitmap 对象的复用(inBitmap = poolBitmap & inMutable = true)减少 Bitmap 对象的频繁创建
  • 避免自动装箱类,避免GC

你做过组件化吗?

  • 复用
  • 隔离
  • 依赖抽象
  • 代码边界

如何用工程手段,提高写代码的生产力?

  • 代码自动生成
  • 字节码修改
  • 找出样板代码,只写高级逻辑、归纳低级逻辑

内存抖动:高频、快速分配大量的对象,GC会执行频繁,如1000次for循环内执行new一万个对象
GC在执行时会停止其他所有线程,stop the world , 这样界面就会卡顿

stop the world:
在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外)。
Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互;这些现象多半是由于gc引起。

做算法题时,不要自己闷头想再表达,可以一边想一边自言自语的把想法说出来

AOP + AspectJ 处理动态权限申请

  • 可以通过AspectJ框架去切Actvity中添加了指定注解的方法(也就是需要先申请权限的方法)
  • @Around切点方法执行前,通过注解拿到权限列表和requestCode,启动一个透明的Activity,
  • 在该Activity中申请权限并回调到织入类,
  • 可以在业务Activity中通过注解指定申请失败的方法,然后在织入类的回调处反射调用。

AOP还能实现埋点日志上传、统计方法耗时等。还可以在现有代码的执行过程中插入或者预埋代码。(代码插桩)

动态代理应用场景

  • 权限集中申请
  • 日志集中打印
  • 底层屏蔽具体网络请求,Retorfit 网络请求
  • RPC即远程过程调用
  • 需要对较难修改的类方法进行功能增加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

川峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值