• 月薪20k的java面试题他来了


    1.场景描述

    最近有朋友私信,说网上的面试资料有点散,还有些过时的,问老王能否帮忙整理下,老王晚上刚好有空,就给梳理了下,分享给大家。

    2.解决方案

    2.1 说明

    (1)面试的题目多数是从网上找的,老王过滤梳理了下,把一些不常用的或者知道就行的过滤掉了,又加了一些老王自己的,大家面试前背背,更加容易通过“月薪20k”的工作吧。

    (2)有关springboot和springcloud的问题就不多说,老王有这两个系列的博客,可以看下,免费的,就挑了两三个题目,有问题也请关注老王的公众号,直接沟通。

    (3)面试题仅仅是基础,其实大厂或者有点要求的公司,一般都是直接聊,主要问实际项目经验,面试题作为辅助,一般不会让直接做题,假如有,可以考虑接下来是否有面试的必要。

    2.2 开始正题

    1、maven、springboot、springcloud之间的关系

    (1) maven是springboot的基础,springboot项目本身就是maven项目。在maven项目中使用springboot的多个starter加几个约定,就能成为springboot项目了。

    (2)springboot是springcloud的基础,springcloud本身是springboot项目。

    (3)关系:maven->springboot->springcloud

    maven是springboot的基础,springboot是springcloud的基础,maven不依赖于springboot,springboot不依赖与springcloud。

    2、 nacos与eureka区别

    (1)springcloud eureka是注册中心,负责微服务的注册与发现,起到承上启下的作用,在微服务架构中相当于人体的 大脑,很重要,nacos是阿里巴巴出的,功能类似eureka,区别不再啰嗦了。

    (2)nacos的部署方式与springcloud eureka不太一样,euraka是需要创建springboot项目,然后将euraka服务端通过gav的方式加载进来,然后部署项目。

    (3)nacos是直接从阿里巴巴nacos的官网下载jar包,启动服务。

    3、描述一下JVM加载class文件的原理机制?

    答:JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件

    4、java 中操作字符串都有哪些类?它们之间有什么区别?

    操作字符串的类有:String、StringBuffer、StringBuilder。

    String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

    StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

    5. BIO、NIO、AIO 有什么区别?

    • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
    • NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
    • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

    6. 解释一下什么是 ioc?

    ​ IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,其实叫“依赖注入”更加合适。

    ​ 软件系统在没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。

    ​ 软件系统在引入IOC容器之后,这种情形就完全改变了,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。

    ​ 通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。

    说明:

    有点多,小100个面试题,建议面试的话,可以背背,这样心里有点底,老王直接放网盘上了。

    链接:https://pan.baidu.com/s/1bvzJYPQGnC28WfO_dmzJAg 
    提取码:rm55
    

    欢迎关注原创微信公众号「软件老王」,分享一些软件技术、软件行业和好玩的事,里面还有免费分享的java书籍、百万张高清可商用图片等。

    更多信息请关注公众号:「软件老王」,关注不迷路,IT技术与相关干货分享,回复关键字获取对应干货,本文版权归作者软件老王所有,转载需注明作者、超链接,否则保留追究法律责任的权利。
  • 相关阅读:
    (转) Android的Window类
    android 打开文件
    Android线程优先级
    Hierarchy viewer problems
    android:windowSoftInputMode
    (转) Android 安全机制
    Mobl试用之helloword
    写给自己对软件测试经历的总结
    Mobl试用二
    黑马程序员面向对象基础:属性和方法
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/13682033.html
Copyright © 2020-2023  润新知