首页 > 其他分享 >面试题

面试题

时间:2023-02-13 23:47:47浏览次数:29  
标签:面试题 调用 变量 对象 equals 线程 方法

1.String,StringBufffer,StringBuilder的区别
String内存长度是不可变的,我们在开发过程中有时候会去给String赋新值或者是+值,这个其实只是创建了新的对象,而原来的对象会在新的对象创建后被销毁,垃圾回收。因此对于复杂的多变的数据,我们不要使用String
StringBuffer 是线程安全的,常用于多线程安全。因为StringBuffer要维持同步锁,这肯定要消耗部分资源,执行比StringBuilder慢。
StringBuilder 线程不安全

2.ArrayList和LinkedList的区别、hashMap和hashTable的区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 (LinkedList是双向链表,有next也有previous)
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
hashMap和hashTable的区别:
1、Hashtable不允许kv为null值,HashMap允许kv为null值。
2、Hashtable线程安全,HashMap线程非安全。
3、Hashtable继承Dictionary类,HashMap实现Map接口。

3.多线程问题:wait sleep区别 sync线程同步、死锁问题
sleep
让当前线程休眠指定时间。
休眠时间的准确性依赖于系统时钟和CPU调度机制。
不释放已获取的锁资源,如果sleep方法在同步上下文中调用,那么其他线程是无法进入到当前同步块或者同步方法中的。
可通过调用interrupt()方法来唤醒休眠线程。
wait
让当前线程进入等待状态,当别的其他线程调用notify()或者notifyAll()方法时,当前线程进入就绪状态
wait方法必须在同步上下文中调用,例如:同步方法块或者同步方法中,这也就意味着如果你想要调用wait方法,前提是必须获取对象上的锁资源
当wait方法调用时,当前线程将会释放已获取的对象锁资源,并进入等待队列,其他线程就可以尝试获取对象上的锁资源。

4.== equse区别
1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

  2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。


1)对于==,比较的是值是否相等
如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,
如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的都是值,只是引用类型变量存的值是对象的地址
2)对于equals方法,比较的是是否是同一个对象
首先,equals()方法不能作用于基本数据类型的变量,
另外,equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,所以说所有类中的equals()方法都继承自Object类,在没有重写equals()方法的类中,调用equals()方法其实和使用==的效果一样,也是比较的是引用类型的变量所指向的对象的地址,不过,Java提供的类中,有些类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,比如String类。

5。redis:有哪些存储类型
String字符串:格式: set key value
Hash(哈希)格式: hmset name key1 value1 key2 value2
List(列表)格式: lpush name value
Set(集合)格式: sadd name value
zset(sorted set:有序集合)格式: zadd name score value

6.MongoDB:吃内存吗 为什么效率比较高

7.重载、重写
重载是一个类中方法名相同(必须相同),而入参不同的多个方法,(返回值随意),是一个类中多态性的一种表现
重写是子类继承父类中的方法对其进行重写,必须是入参返回值方法名必须完全一样,仅仅是内部逻辑不同

8.BPM工作流(非必须)

9.SpringBoot跟SpringCloud的区别

10.jdk8新特性 (非必须)

11.new创建的对象在堆区、函数中的临时变量在栈区、字符串在字符串常量区

12.jvm堆栈内存问题

13.spring IOC、AOP

面试题
1.springboot的异步调用
@Async

2.cookie session
3.Git的使用
4.防止sql注入 如果硬要用$应该怎么做
简单说,#{}是经过预编译的,是安全的;${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。
如果我们order by语句后用了${},那么不做任何处理的时候是存在SQL注入危险的。你说怎么防止,那我只能悲惨的告诉你,你得手动处理过滤一下输入的内容。如判断一下输入的参数的长度是否正常(注入语句一般很长),更精确的过滤则可以查询一下输入的参数是否在预期的参数集合中。


5.常用设计模式原理
6.@Component项目启动之前执行 @Async是springboot中的异步调用,其实也就是开启了另一个线程,需要在启动类加入@EnableAsync使异步调用@Async注解生效

7.线程死锁的原因
8.mybatis优缺点

标签:面试题,调用,变量,对象,equals,线程,方法
From: https://www.cnblogs.com/cbzhl/p/17118305.html

相关文章

  • 前端面试题:如何实现事件总线 Event Bus
    前端面试题:如何实现事件总线EventBus介绍通常作为多个模块间的通信机制,相当于一个事件管理中心,一个模块发送消息,其它模块接受消息,就达到了通信的作用。原理本质上是......
  • java面试题(五)
    1.1为什么Java代码可以实现一次编写、到处运行?参考答案JVM(Java虚拟机)是Java跨平台的关键。在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JV......
  • java面试题(六)
    1.11int和Integer有什么区别,二者在做==运算时会得到什么结果?参考答案int是基本数据类型,Integer是int的包装类。二者在做==运算时,Integer会自动拆箱为int类型,然后再进行比较......
  • 为什么这11道JVM面试题这么重要(附答案)
    本文内容整理自博学谷狂野架构师运行时数据区都包含什么虚拟机的基础面试题程序计数器Java虚拟机栈本地方法栈Java堆方法区程序计数器程序计数器是线程......
  • Python常见面试题(持续更新 23-2-13)
    Python常见面试题(持续更新23-2-13)参考资料https://github.com/taizilongxu/interview_pythonhttps://github.com/hantmac/Python-Interview-Customs-Collectionhtt......
  • php经典面试题
    什么是面向对象?  面向对象OO=面向对象的分析OOA+面向对象的设计OOD+面向对象的编程OOP;通俗的解释就是“万物皆对象”,把所有的事物都看作一个个可以独立的对象(单......
  • 百度前端常考vue面试题(附答案)
    怎么实现路由懒加载呢这是一道应用题。当打包应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问时才加......
  • 高级前端二面vue面试题(持续更新中)
    action与mutation的区别mutation是同步更新,$watch严格模式下会报错action是异步操作,可以获取数据后调用mutation提交最终数据MVVM的优缺点?优点:分离......
  • 前端react面试题(边面边更)
    diff算法是怎么运作每一种节点类型有自己的属性,也就是prop,每次进行diff的时候,react会先比较该节点类型,假如节点类型不一样,那么react会直接删除该节点,然后直接创建新的节点......
  • 前端react面试题指南
    概述下React中的事件处理逻辑抹平浏览器差异,实现更好的跨平台。避免垃圾回收,React引入事件池,在事件池中获取或释放事件对象,避免频繁地去创建和销毁。方便事件统一管......