2020 Android 面试题

版权声明:本文为博主原创文章,未经博主允许不得转载。
原文链接:https://mp.csdn.net/mdeditor/80458877

  1. Android 中的dp、px、dip的先关概念
    dp、px、dip、dpi sp相关概念
    字节跳动技术团队适配方案

  2. Android 四大组件有哪些、各自的作用

  3. Activity的生命周期以及四种启动模式,在那些情况下使用

  4. 概述一下Android 的事件分发机制

  5. Android 中的几种引用,以及区别
    Android 四种引用比较与源码分析

  6. Handler、Looper、Messge之间的关系
    Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系

  7. Listview缓存机制、常见的ListView的优化
    ListView异步加载图片乱序问题,原因分析及解决方案
    Android ListView工作原理完全解析,带你从源码的角度彻底理解

  8. ListView和RecycleView的区别,谈谈对它们缓存区理解
    .RecyclerView 必知必会Android ListView 与 RecyclerView 对比浅析–缓存机制
    ListView工作原理完全解析
    RecyclerView剖析

  9. Android 动画有哪些类,它们的特点和区别是什么
    Android 动画有哪些类,它们的特点和区别是什么

  10. 谈谈对Android 布局优化的了解

  11. 常见的内存泄漏情况、做过哪些内存性能优化

  12. 遇到过哪些Fragment的问题、如何处理的

  13. 描述一下View的绘制原理、做过什么复杂的自定义View

  14. Android 图片框架中常用的内存缓存和磁盘缓存是什么

  15. Java 线程安全的单例写法;(优先)
    Java 线程安全的单例写法及volatile、原子性、可见性

  16. Android 中触发Gc 的几种情况,Gc的原理和策略
    4种GC方法+分代回收+触发GC情况+内存申请过程
    Android垃圾回收机制

  17. 谈谈对常用加密算法的理解
    可以说说自己用过的加密算法 https用到的加密算法

  18. TCP和UDP区别,http和https区别,https如何保证数据安全
    TCP的三次握手与四次挥手理解
    一文看懂https如何保证数据传输的安全性的(推荐)

  19. ConcurruenthashMap 和 SynchronizedMap
    HashMap、ConcurrentHashMap和SynchronizedMap – 哈希表在Java中的同步处理
    我总结主要两点:1.锁的数量 SynchronizedMap 一个锁锁住整个hash表,阻赛线程,降低性能,ConcurrentHashMap 多个锁 每个锁锁一个桶。2.并发修改异常 ConcurrentHashMap使用了一种不同的迭代方式。在这种迭代方式中,当iterator被创建后集合再发生改变就不再是抛出ConcurrentModificationException,取而代之的是在改变时new新的数据从而不影响原有的数据,iterator完成后再将头指针替换为新的数据,这样iterator线程可以使用原来老的数据,而写线程也可以并发的完成改变。SynchronizedMap 直接会抛出ConcurrentModificationException

  20. SparseArray 相比 hashMap 性能优化点在哪
    SparseArray 源码解析及hashMap性能对比

  21. ClassLoader加载机制

  22. java中String类为什么不可变?

    1. String 池,缓存Test,另一个引用修改成 TEST,由于缓存在多个对象之间共享,因此始终存在风险,其中一个引用的操作会影响所有其他引用。
    2. 字符串作为参数,打开网络连接,文件路径,反射机制所需要的String参数等将会引起各种安全隐患
    3. 缓存的哈希值,将会发生变化,每次都取计算新的哈希码,无法正确获取存储的值
    4. String 可变会导致线程安全问题
    5. 最重要的是 如果字符串可变,java 类加载机制将不保证类被正确加载。
  23. java 为什么wait(),notify(),notifyAll()必须在同步方法/代码块中调用?
    只有在调用线程拥有某个对象的独占锁时,才能够调用该对象的wait(),notify()和notifyAll()方法。

    在Java中,所有对象都能够被作为"监视器monitor"——指一个拥有一个独占锁,一个入口队列和一个等待队列的实体entity

    假设wait(),notify(),notifyAll()方法不需要加锁就能够被调用。此时消费者线程调用wait()正在进入状态变量的等待队列(可能还未进入)。在同一时刻,生产者线程调用notify()方法打算向消费者线程通知状态改变。那么此时消费者线程将错过这个通知并一直阻塞。因此,对象的wait(),notify(),notifyAll()方法必须在该对象的同步方法或同步代码块中被互斥地调用。

  24. new 一个对象的过程中发生了什么?
    new 一个对象的过程中发生了什么?

附:
大厂Java面试题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值