首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

猫眼面经汇总

、java.util.concurrent.Executors java的线程和操作系统的线程什么关系 优先级队列,如何处理 hash冲突的解决方式,如何判断各个方式的优劣 开放定址法 链地址法 再哈希法...Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。...产生死锁后如何解决 鸵鸟策略 死锁检测与死锁恢复 死锁预防 死锁避免 线程和进程的区别 进程:进程是操作系统资源分配的基本单位。...可避免脏读的发生。 可重复读(REPEATABLE READ):保证在同一个事务中多次读取同样数据的结果是一样的。可避免脏读、不可重复读的发生。...AOP是对OOP的补充和完善。AOP利用的是代理,分为CGLIB动态代理和JDK动态代理。OOP引入封装、继承和多态性等概念来建立一种对象层次结构。OOP编程中,会有大量的重复代码。

1K30

架构师技能3:code review-高效代码50例

虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象,是在堆中产生实例。...因此装箱和拆箱都是需要CPU和内存资源的。       所以应尽量避免使用自动装箱和拆箱。在集合类对象,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本类型。...userVOList.add(userVO); } 1.7.不可变的静态常量,尽量使用非线程安全类 不可变的静态常量,虽然需要支持多线程访问,也可以使用非线程安全类。...,尽量使用JDK提供的方法拷贝集合 JDK提供的方法可以一步指定集合的容量,避免多次扩容浪费时间和空间。...不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。 十、线程 ---- 10.1.在单线程中,尽量使用非线程安全类 使用非线程安全类,避免了不必要的同步开销。

65040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java基础面试整理

    每个知识点都伴随着清晰的解释和示例代码,涵盖了继承、Lambda表达式、泛型、注解、文件操作、异常处理、多线程、集合框架、强制类型转换、枚举集合和正则表达式等多个重要概念。...注解(Annotations) 了解注解的定义和使用,它可以用于代码注释、配置和元数据处理。...枚举集合 了解如何使用EnumSet和EnumMap来处理枚举类型的集合和映射。...EnumMap是专门用于枚举类型的映射,它将枚举常量映射到特定的值。 在示例中,我们演示了如何创建和使用EnumSet和EnumMap来处理枚举类型的数据。 24....这些知识点包括继承、Lambda表达式、泛型、注解、文件操作、异常处理、多线程、集合框架、强制类型转换、枚举集合和正则表达式。

    8810

    APK体积优化有感

    ,Field在init和clinit中赋值,并且之前没有付过非默认值,且此次赋值是默认值,那么这个赋值就是可以优化的 实现: 1.遍历init,clinit的字节码找到putField和putStatic...筛选出只对本类Filed赋值的指令 3.将Classname和filedname作为一个key,如果付非默认值则保存到集合中 4.当碰到赋默认值的指令时检测是否在集合中,如果不在集合中进行标记该指令是可以删除的冗余指令...思路: 分析static,final的常量,过滤用来表示序列化对象版本的 serialVersionUID 字段; 还有反射使用到的字段(一般来说不太会有反射访问 final 类型变量的情况,但这里还是会尝试分析代码中对字段的反射调用...R.class内联 R文件在Application和Module的不同处理 application: 常量消除 R文件内部的Field都是使用static,final修饰的。...观察字节码会发现访问R文件的getstatic指令会变成ldc直接引入id常量 module:未使用常量消除 由于R文件中的id不能重复,而原生的aapt是根据类别和顺序生成的资源id,是固定的。

    64830

    【C++初阶】--- C++入门(下)

    f@@YAXH@Z),该符号在函数 _main 中被引用) 补充:如何解决头文件中声明定义的函数在.cpp等文件中重复包含问题(链接错误,重定义)?...#pragma once,是解决不了上述问题的,解决的是同一个文件中头文件重复包含的问题,使用#ifndef... #define... #endif条件编译来实现; 解决方法:1....内联函数inline,原理与静态函数类似,两函数不会进入符号表(一般小函数使用此方法,注意不能声明和定义分离,会报链接错误) 宏的优缺点? 优点: 增强代码的复用性。 提高性能。...auto在实际中最常见的优势用法就是跟以后会讲到的C++11提供的新式for循环,还有lambda表达式,bind等进行配合使用。...在C++98中,字面常量0既可以是一个整形数字,也可以是无类型的指针(void*)常量,但是编译器默认情况下将其看成是一个整形常量,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。

    10710

    java编码规范

    【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。...说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。 ---- 4....3) 类非 static 成员变量并且与子类共享,必须是 protected。 4) 类非 static 成员变量并且仅在本类使用,必须是 private。...【强制】对大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。...对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。 ---- 3. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。

    2.5K20

    C++ 特性使用建议

    通常友元应该定义在同一文件内,避免代码读者跑到其它文件查找使用该私有成员的类。...使用异常主要有如下优点: (1)异常允许应用高层决定如何处理在底层嵌套函数中发生的失败,不用管那些含糊且容易出错的错误代码。 (2)很多现代语言都用异常。...在单元测试中可以使用 RTTI,但是在其他代码中请尽量避免。尤其是在新代码中,使用 RTTI 前务必三思。...11.前置自增和自减 对简单数值(非对象),前置与后置均可,对于迭代器和其他构造类型对象使用前前置形式 (++i)。...16.预处理宏 使用宏时要非常谨慎,尽量以内联函数,枚举和常量代替之。 宏意味着你和编译器看到的代码是不同的。这可能会导致异常行为,尤其因为宏具有全局作用域。

    1.7K20

    java编码规范

    【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。...说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。 ---- 4....3) 类非 static 成员变量并且与子类共享,必须是 protected。 4) 类非 static 成员变量并且仅在本类使用,必须是 private。...【强制】对大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。...对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。 ---- 3. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。

    2.6K10

    GOGO-java开发规范

    【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。不会的单词请谷歌翻译。...说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。----4. 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。...3) 类非 static 成员变量并且与子类共享,必须是 protected。 4) 类非 static 成员变量并且仅在本类使用,必须是 private。...【强制】对大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。...对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。----3. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。

    25130

    《编写高质量代码》学习笔记(2)

    那如果要查找仅次于最大值的元素(也就是老二),该如何处理呢?要注意,数组的元素时可以重复的,最大值可能是多个,所以单单一个排序然后取倒数第二个元素时解决不了问题的。...此时,就需要一个特殊的排序算法了,先要剔除重复数据,然后再排序,当然,自己写算法也可以实现,但是集合类已经提供了非常好的方法,要是再使用自己写算法就显得有点重复造轮子了。...---- 建议83:推荐使用枚举定义常量 常量声明是每一个项目都不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量,若在项目中使用的是Java1.5之前的版本,基本上都是如此定义的...那么枚举常量与我们经常使用的类常量和静态常量相比有什么优势?问得好,枚举的优点主要表现在四个方面: 1.枚举常量简单:简不简单,我们来对比一下两者的定义和使用情况就知道了。...Java之所以如此处理,有两个原因: 避免JVM的大换血。

    1.7K40

    sparksql源码系列 | 最全的logical plan优化规则整理(spark2.3)

    Union:现在,Union就意味着Union ALL,它不消除重复行。因此,通过它下推Filter和Project是安全的。下推Filter是由另一个规则PushDownPredicates处理的。...为了避免扩展JOIN条件,即使发生谓词下推,JOIN条件也将保持原始形式。...,这意味着输入和输出的类型都是非空原始类型;2.没有自定义集合类指定数据项的表示形式。MapObjects将给定表达式应用于集合项的每个元素,并将结果作为ArrayType或ObjectType返回。...这类似于典型的映射操作,但lambda函数是使用catalyst表达式表示的。...LambdaVariables是MapObjects中使用的循环变量的占位符。不应该手动构造,而是将其传递到提供的lambda函数中。

    2.6K10

    变量和常量

    ,用于检测和处理程序中可能出现的错误。...以下是一些关于Go中变量和常量在并发编程中使用的技巧: 变量 避免共享状态:在多个goroutine之间共享变量可能会导致数据竞争。...常量 定义常量:在Go中,使用const关键字定义常量。常量的值不能被更改,因此它们是并发安全的。 避免重复代码:将常量用于重复的数值或字符串可以帮助减少代码重复。...这有助于确保代码的一致性,并使维护更容易。 使用枚举:当需要使用一组相关的常量时,可以使用枚举。使用枚举可以使代码更加清晰易懂,并提高代码的可读性。...不要过度使用常量:虽然常量是很有用的,但是过度依赖它们可能会使代码变得难以理解。在某些情况下,使用变量可能更加合适。 以上是关于Go中变量和常量在并发编程中使用的技巧,希望对您有所帮助。

    14610

    Java 基础高频面试题(2021年最新版)

    接口默认方法:Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可 Lambda 表达式和函数式接口:Lambda 表达式本质上是一段匿名内部类,也可以是一段可以传递的代码...Stream API:用函数式编程方式在集合类上进行复杂操作的工具,配合Lambda表达式可以方便的对集合进行处理。...Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。...如果我们合理的使用线程池,则可以避免把系统搞崩的窘境。总得来说,使用线程池可以带来以下几个好处: 降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。 提高响应速度。...Set(注重独一无二的性质):不允许重复的集合,不会有多个元素引用相同的对象。 Map(用Key来搜索的专业户): 使用键值对存储。Map 会维护与 Key 有关联的值。

    53720

    阿里编程规范 pdf_阿里前端开发规范

    说明:大而全的常量类,杂乱无章,使用查找功能才能定位到修改的常量,不利于理解和维护。 正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 ConfigConsts 下。...在 JDK8 中,针对统计时间等场景,推荐使用Instant 类。 对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。...6、集合处理 关于 hashCode 和 equals 的处理,遵循如下规则: 1)只要重写 equals ,就必须重写 hashCode 。...catch 时请分清稳定代码和非稳 定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。...如果加了栈信息,在频繁调用出错的情况下,数据序列化和传输的性能损耗也是问题。 避免出现重复的代码(Don’t Repeat Yourself),即DRY原则。

    1.3K10

    Effective Java(第三版)-学习笔记

    避免创建不必要的对象 如对String对象的包装new String("bikini")(应该直接使用"bikini"),计算时包装类型和基本类型的来回转换,大对象的重复创建等都是资源的浪费。...4.当编译期可确定常量的集合内容时,都可以使用枚举类来实现。...使用EnumSet代替bit字段的定义 EnumSet是对枚举类对象的数组集合包装,提供了一系列处理枚举类数组集合的方法。使用位向量数组实现,性能和bit处理相当,同时又拥有枚举类的优点。...Chapter07:Lambda表达式和流处理 优先使用lambdas而不是匿名类 lambda可以使代码看起来更加简洁,书写方便。...streams用函数对象来处理流数据(想象水流流过管道),循环代码块(循环遍历代码,如for循环,while循环)用代码块不断的重复操作。他们的操作对比: 1.代码块可读写作用域内访问的任何局部变量。

    1.2K10

    Java 中文官方教程 2022 版(四)

    例如,如果您希望对集合的每个元素执行某个操作,当进程完成时,或者当进程遇到错误时,您将使用 Lambda 表达式。...编译时和部署时处理 — 软件工具可以处理注解信息以生成代码、XML 文件等。 运行时处理 — 一些注解可以在运行时被检查。...本课程解释了注解可以在哪里使用,如何应用注解,在 Java 平台标准版(Java SE API)中有哪些预定义的注解类型可用,如何将类型注解与可插入类型系统结合使用以编写具有更强类型检查的代码,以及如何实现重复注解...您可以在任何需要使用标准注解的地方重复使用注解。例如,您有一个处理未经授权访问异常的类。...图像处理公司编写其类来实现一个接口,然后将其公开给客户。图形公司然后使用接口中定义的签名和返回类型调用图像处理方法。

    18900

    【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

    Lambda 表达式 简介 ---- Lambda 表达式 简介 : ① 作用 : Lambda 表达式可以作为函数参数 , 传递到函数中 , 使代码结构更加紧凑 ; ② 应用场景 : 集合中扩展集合操作..., 当做函数参数 , 替代匿名内部类 ; ③ 好处 : Lambda 表达式语法简洁 , 避免了冗长的函数声明调用过程 ; ④ 函数式编程 : 函数作为输入和输出 ; 在集合操作中 , 过滤 filter...val ; ② 变量 / 常量 名称 : 符合标识符规则即可 ; ③ Lambda 表达式参数列表 : 在括号中 () 表示 , 如果没有参数 , 括号内空着即可 , 如果有多个参数使用逗号隔开 ;...Lambda 表达式调用 : 使用 invoke 方法 , 或直接当做函数调用 , 即可调用 Lambda 表达式 ; ① 直接调用 : 调用格式为 “Lambda表达式变量 / 常量 ( 实际参数列表...+ b}") a + b } ② Lambda 表达式调用方法 : 使用 lambda4.invoke(1, 2) 和 lambda4(1, 2) 两种形式 , 都可以调用 Lambda 表达式

    1.2K20

    Android兼容Java 8语法特性的原理分析

    等高阶函数) 方法引用(使用::关键字将函数转化为对象) 默认方法(抽象接口中允许存在default修饰的非抽象方法) 类型注解和重复注解 其中Lambda表达、函数式接口、方法引用三个特性为Java带来了函数式编程的风格...区别在于: 后四种指令,在编译期间生成的class文件中,通过常量池(Constant Pool)的MethodRef常量已经固定了目标方法的符号信息(方法所属者及其类型,方法名字、参数顺序和类型、返回值...至此,上面7个步骤就是Lambda表达式在Java的底层的实现原理。Android 针对这些实现会怎么处理呢?...J8Sample.class和J8Sample$$Lambda$1.class反编译之后的代码如下: ? ?...如何能够全版本支持Java 8。D8还有很长的一段路要走。 如果我们在低版本需要使用新的API,目前可以采取将这些API打包进去的临时办法。 写到这里,肯定有人要提出,为什么不直接使用Kotlin呢?

    87021

    JVM之字符串常量池

    字符串拼接操作不一定使用的是StringBuilder! 如果拼接符号左右两边都是字符串常量或常量引用,则仍然使用编译期优化,即非StringBuilder的方式。 2....//在字符串常量池中生成"11"。如何理解:jdk6:创建了一个新的对象"11",也就有新的地址。...:使用的是上一行代码代码执行时,在常量池中生成的"11"的地址 String s4 = "11"; System.out.println(s3 == s4);//jdk6...七、G1中的字符串去重操作 背景:对许多Java应用(有大的也有小的)做的测试得出以下结果: ➢堆存活数据集合里面String对象占了25% ➢堆存活数据集合里面重复的String对象有13.5% ➢...这个项目将在G1垃圾收集器中实现自动持续对重复的String对象进行去重,这样就能避免浪费内存。 实现 ➢当垃圾收集器工作的时候,会访问堆上存活的对象。

    29530
    领券