Java面经背诵版(一)

文章目录

  • Java面经背诵版(一)
    • 1、[牛客刷题](https://www.nowcoder.com/exam/oj?page=1&tab=%E7%AE%97%E6%B3%95%E7%AF%87&topicId=295)
    • 2、RabbitMQ有以下几种工作模式:
    • 3、String、StringBuffer、StringBuilder的区别
    • 4、String s与new String的区别
    • 5、反射的原理,反射创建类实例的三种方式是什么
      • Java反射机制:
      • 获取Class类对象三种方式
    • 6、JDK动态代理与cglib实现的区别
    • 7、谈谈序列化和反序列化
    • 8、分布式结构,怎么保证数据一致性
    • 9、谈谈SQL注入
    • 10、请你说明一下left join和right join的区别

1、牛客刷题

2、RabbitMQ有以下几种工作模式:

简单模式:一个生产者,一个消费者

work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一

订阅模式:一个生产者发送的消息会被多个消费者获取

路由模式:发送消息到交换机并且要指定路由key,消费者指定路由key将队列绑定到交换机

topic模式:将路由键和某个模式进行匹配,此时队列需要绑定在一个模式上

3、String、StringBuffer、StringBuilder的区别

String:

  • String类是一个不可变的类,一旦创建就不可修改
  • String是final类,不能被继承
  • String实现了equals()方法和hashCode()方法

StringBuffer:

  • 继承自AbstractStringBuilder,是可变类
  • StringBuffer是线程安全的
  • 可以通过append方法动态构造数据

StringBuilder:

  • 继承自AbstractStringBuilder,是可变类
  • StringBuilder是非线程安全的
  • 执行效率比StringBuffer高

4、String s与new String的区别

String str = "xuzheng";
String newStr = new String("xuzheng");

String str = “xuzheng”;

先在常量池中查找有没有"xuzheng"这个对象,如果有,就让str指向那个"xuzheng",如果没有,在常量池中新建一个"xuzheng"对象,并让str指向在常量池中新建的对象"xuzheng"。

String newStr = new String(“xuzheng”);

是在堆上建立的对象"xuzheng",在栈中创建堆中"xuzheng"对象的内存地址。

5、反射的原理,反射创建类实例的三种方式是什么

Java反射机制:

Java的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java语言的反射机制

获取Class类对象三种方式
  • 使用Class.forName静态方法
  • 使用类的.class方法
  • 使用实例对象的getClass方法

6、JDK动态代理与cglib实现的区别

  • java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHander处理;
  • cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理
  • JDK动态代理只能对实现了接口的类生成代理,而不能针对类
  • cglib是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法。因为是继承,所以该类或方法最好不要声明成final

7、谈谈序列化和反序列化

序列化是指将对象转换为字节序列的过程,而反序列化则是将字节序列转换为对象的过程。

Java对象序列化是将实现了Serializable接口的对象转换成一个字符序列,能够通过网络传输、文件存储等方式传输,传输过程中却不必担心数据在不同机器、不同环境下发生改变,也不必关心字节的顺序或其他任何细节,并能够在以后将这个字节序列完全恢复为原来的对象。

8、分布式结构,怎么保证数据一致性

1、规避分布式事务——业务整合

2、经典方案——eBay模式

9、谈谈SQL注入

SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最后达到欺骗服务器执行恶意的SQL命令。

1、SQL注入攻击的总体思路

  • 寻找到SQL注入的位置
  • 判断服务器类型和后台数据库类型
  • 针对不同的服务器和数据库特点进行SQL注入攻击

2、应对方法

  • 使用正则表达式过滤传入的参数
  • 参数绑定
  • 使用预编译手段,绑定参数式最好的防SQL注入的方法

10、请你说明一下left join和right join的区别

left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联结):返回包括右表中的所有记录和左表中联结字段相等的记录

Java面经背诵版(一)相关推荐

  1. 【2021秋招】Java 面试知识点【精华背诵版】

    Java 开发知识点[背诵版] Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理和 ...

  2. Java 面试知识点【精华背诵版】

    Java 开发知识点[背诵版] Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理和 ...

  3. 它来了:阿里巴巴Java开发手册泰山版解读

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「阿飞的博客」 <Java开发手册 ...

  4. 电脑版java运行条件,Java Runtime Environment电脑版-Java Runtime Environment(Java运行环境)8.0.221 x64正式版-蜻蜓手游网...

    很多时候我们运行一些软件都提示需要装Java环境,比如本站的<apk傻瓜式改包工具>,也是需要jdk环境才能正常使用的,但是现在官网需要注册账户才能下载,非常的麻烦,今天小编就为大家带来最 ...

  5. java程序设计 第2版 唐大仕_《Java程序设计(第2版)》唐大仕 源代码

    [实例简介] <Java程序设计(第2版)>唐大仕 清华大学出版社 北方交通大学出版社 [实例截图] [核心代码] bbe30560-8619-4a35-a024-50004cc5c8e2 ...

  6. java下载pdf6_疯狂java讲义第6版 电子版(pdf格式)

    疯狂java讲义第6版pdf是李刚打造的经典java编程图书的最新版,为了帮助更多的读者能真正掌握Java编程,感受到Java语言的魅力,领会到Java编程的快乐,作者根据多年来的Java授课经验,精 ...

  7. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》

    文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...

  8. 一份我们团队Java开发的开发规范,参考了阿里巴巴Java开发手册终极版v1.3.0

    编程规约 For variable name, always use English with lowerCamelCase. space in comment: bad example: Sugge ...

  9. java开发者工具开源版_JArchitect对Java开源贡献者免费

    java开发者工具开源版 JArchitect是用于Java代码库的静态分析工具,它提供交互式GUI和HTML报告,用于查找代码中过于复杂或有问题的区域,执行分析以重构并比较随时间的变化. 在版本3中 ...

  10. 深入理解java虚拟机 (三) 第二版

    参考资料 本书名为"深人理解Java虚拟机",但要想深人理解虚拟机,仅凭- -本书肯定是远远不够的,读者可以通过以下信息找到更多关于Java虚拟机方面的资料.我在写作此书的时候,也 ...

最新文章

  1. 求合体电脑版_SCP CB 电脑移植版测评
  2. 【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )
  3. 关键词提取_NLP 关键词 提取 实战 案例
  4. 万字长文深入理解java中的集合-附PDF下载
  5. drupal启动过程
  6. 数组对象的过滤(取出一项中的某些字段)
  7. XNA中的中文输入(一)
  8. ubuntu下安装配置 JDK7
  9. 记一次rm -rf之后的数据恢复操作
  10. b和kb的换算_b和mb的换算(b kb mb换算)
  11. html如何加黑色蒙板,Photoshop中怎么添加黑色蒙版?
  12. 《三体3:死神永生》读后感
  13. 谈谈对springboot的理解
  14. 新版白话空间统计(25):方向分布(标准差椭圆)
  15. 飞思卡尔单片机PLL时钟总线模块
  16. 维智科技时空AI技术赋能金融行业
  17. 互联网安全初创企业Cylance获 1 亿美元融资
  18. [重装系统系列]fcitx 小企鹅输入法 安装 in ubuntu 15.04
  19. 【人工智能】AI 公司:DeepMind 公司传
  20. 【Solidswork】Solidswork如何画真实螺纹

热门文章

  1. 通过Universal Link进行微信分享
  2. Android文字转语音
  3. EasyDarwin接口的使用——使用C++编写客户端实现与EasyDarwin服务器的交互
  4. 母亲节微信公众号走心文章就用来逗编辑器排版
  5. 【Android病毒分析报告】- 手机支付毒王“银行悍匪”的前世今生
  6. 超市登录系统 java_超市订单管理系统,登录功能实现
  7. uygurqa输入法android,uygurqa维语输入法2021
  8. android 修改手机型号加点,修改Android设备信息,如修改手机型号为iPhone7黄金土豪版! -电脑资料...
  9. 计算机专业专业课代号408,计算机408有多难
  10. 参考文献查阅网站大全