美文网首页
Android面试知识点(三)*

Android面试知识点(三)*

作者: 书虫大王X | 来源:发表于2021-06-21 18:56 被阅读0次

1、java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS)
2、Java中的锁分类 - byhieg
3、Java内部类不能引用本地变量

  • 原因:局部变量的生命周期与局部内部类的对象的生命周期的不一致性!
    设方法f被调用, 在它的调用栈中生成了变量i,此时产生了一个局部内部类对象inner_object,它访问了该局部变量i .当方法f()运行结束后,局部变量i就已死亡了,不存在了.但局部内部类对象inner_object还可能一直存在(只能没有人再引用该对象时,它才会死亡),它不会随着方法f()运行结束死亡.这时出现了一个结果:局部内部类对象inner_object要访问一个已不存在的局部变量i就会报错。
  • 解决方法二:
    当变量是final时,通过将final局部变量”复制”一份,复制品直接作为局部内部中的数据成员.这样:当局部内部类访问局部变量时,其实真正访问的是这个局部变量的”复制品”(即:这个复制品就代表了那个局部变量).因此:当运行栈中的真正的局部变量死亡时,局部内部类对象仍可以访问局部变量(其实访问的是”复制品”)
  • 方法一:1、在外部方法之前声明该变量就行了

4、安卓OnTouchListener,onTouchEvent,onClickListener执行顺序

  • 执行OnTouchListener,之后为onTouchEvent,最后才执行onClickListener内的方法
  • 至于为什么OnTouchListener和onTouchEvent执行了两次,是因为在DOWN和UP时两个方法都被调用,至于onClickListener则只在UP的时候调用

5、并发volatile关键字如何保证可见性和有序性及底层实现原理

  • 1.Lock前缀指令会引起处理器缓存会写到内存
    2.一个处理器的缓存回写到内存会导致其他处理器的缓存失效

6、HashMap源码解析、jdk7和8之后的区别、相关问题分析

7、String a = "a" + "b" + "c"; 创建了 5个对象

hashmap:

  • Node结构中有key字段、有value字段、还有next字段、还有hash字段
  • hash值是key是hashcode二次加工得到的 : key的hashcode高16位^低16位得到的一个新值
  • 寻址算法:hash & (table.length - 1)
  • 任何(数)与高位全部为0、低位都是一串1的数按位与之后,它得到的这个数值定是>=0且<=这个二进制数的,然后带上数组的下标为0的slot ,加起来正好..为2的次方数.

套接字:

    1. 套接字的用途

Socket被用于客户端/服务端应用框架中。服务端是一个针对客户端的请求执行某些特定操作的进程。大多数应用层协议如FTP、SMTP和POP3使用Socket来建立客户端与服务端之间的连接,从而进行数据的交换。

    1. 套接字的类型
  • 常见的套接字类型有三种。前两种被广泛地使用,而后一种使用较少。
    一般情况下假定进程间使用同种类型的socket进行通讯,但事实上不同类型的socket之间并没有通讯上的限制。
  • 流套接字:提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。如果你通过流套接字发送三个字符”A, B, C”,它们将会以同样的顺序到达——”A, B, C”,原因在于流套接字使用TCP(传输控制协议)进行数据传输。如果传输失败,发送方将会收到错误提示符。
  • 数据包套接字:提供无连接服务。你无需像使用流套接字那样建立一个连接,而只需将目的地址信息一同打包后发送出去。该服务使用UDP(用户数据报协议)进行传输,延迟小且效率高,缺点是不能保证数据传输的可靠性。
  • 原始套接字:允许用户对底层通讯协议进行访问。能够对底层的传输机制进行控制,因此可以用原始套接字来操纵网络层和传输层应用。原始套接字并不是给普通用户使用的,它们主要被用于开发新的通讯协议,或是用来获取已有通讯协议的一些隐蔽功能的访问权限。
  • java接口:
  • 在需要使用接口传递数据的一方定义一个接口的实例,用以保存外界传入的接口监听对象;使用这个接口实例调用接口方法:传递数据。
  • 在需要监听数据数据的一方实现接口方法(在这里得到数据);设置接口的监听对象为当前对象。
  • 接口和传递数据的一方可以先定义好,在需要监听数据时,再实现监听数据的一方(区别与普通的方法,普通的方法只能是在知道监听数据的一方后,才能编写发送数据的一方)
// 接口
interface IRentHouseService{
    fun rentDidFinished(data:String)
}

class Agent{
    var listener:IRentHouseService? = null

    fun rentHouse(){
        listener?.rentDidFinished("传递的数据")
    }
}

class Person:IRentHouseService{
    var a:String? = null
    fun needHouse(){
        val xw = Agent()
        xw.listener = this
        xw.rentHouse()
    }

    override fun rentDidFinished(data: String) {
        println("接收到的数据 $data")
        a = data
    }
}
  • kotlin高阶函数回调数据:

高阶函数使用:

  • 定义
  • 实现(谁用谁实现)
  • 调用(一般是定义方调用)
//  定义 : 高阶函数 (在自定义类)
    var callBack:((Int) -> Unit)? = null

//  实现 (在MainActivity中接收传递过来的值)
        animator_View.callBack = {
            Log.v("yk","我被点击了 + $it")
        }

//  调用 ( 在自定义类中传递数组出去)
    override fun onTouchEvent(event: MotionEvent?): Boolean {
        when (event?.action){
            MotionEvent.ACTION_DOWN ->{
                callBack?.let {
                    it(20)
                }
            }
        }
        return true
    }

相关文章

  • Android面试总结二

    参考文章 40个Android面试题Java面试题集Android名企面试题及知识点整理Android面试题收集较...

  • Android面试题汇总

    面试题汇总 Android复习资料——Android知识点汇总(一) 史上最全的Android面试题集锦 ForA...

  • Android面试题知识点整理篇

    前言 秋招在即,急忙将这些Android知识点整理一套面试题籍,希望对大家有所帮助。 Android面试题知识点 ...

  • 【Android面试有章可循】知识点总结

    分享一篇Android知识点总结文章 面试复习——Android工程师之Android面试大纲 后续我会在这个的基...

  • android面试总汇

    基础汇集常用三方库知识点开发模式性能优化Android NDK 面试题汇总Android使用C/C++来保存密钥

  • 第九周 Android 面试整理

    Android面试整理知识点较全:https://github.com/hcy940215/Android_Int...

  • Android面试题

    Android面试必备: (一)、Java面试题 (二)、Android面试题 (三)、Android高级面试题

  • Android面试知识点(三)*

    1、java里的锁总结(synchronized隐式锁、Lock显式锁、volatile、CAS)[https:/...

  • 1.Activity(一)

    前言:这段时间自己复习高级Android面试整理的一套Android面试知识点总结:开始整理到有道云笔记,后续会直...

  • 面试总结

    经典链接: 1.android最全知识点 2.android开源项目 3.启舰android开发 4.java面试...

网友评论

      本文标题:Android面试知识点(三)*

      本文链接:https://www.haomeiwen.com/subject/cdccrltx.html