资讯专栏INFORMATION COLUMN

JAVA面试题(44)

miracledan / 1579人阅读

摘要:如果不存在最后一个单词,请返回。样例输入输出解法倒序遍历去除字符串最后的所有空格定义计数器缓存长度循环直到遇到空格,计数器自增

    本文首发于cartoon的博客
    转载请注明出处:https://cartoonyu.github.io/c...

java基础

Iterator与ListIterator的区别

Iterator与ListIterator都是Collection的迭代器实现,ListIterator继承于Iterator

遍历集合分类

Iterator可以遍历Set,List,Queue的实现类

ListIterator只能遍历List接口下的实现类

修改被迭代集合

Iterator不能对元素进行修改或者添加元素

ListIterator可以在迭代中修改添加元素

删除元素

两个都可以在迭代过程中删除元素

遍历方式

Iterator只能向下遍历

ListIterator可以向前向后遍历,同时可以获取当前迭代元素的索引

synchronized和ReentrantLock的区别

共同点

都是协调线程间访问互斥资源

可重入,同一线程可以多次获得同一锁

都保证了可见性和互斥性

不同点

获取锁的方式

ReentrantLock需要显式获取锁

synchronized隐式获取锁

灵活性

ReentrantLock可以响应中断,可以切换锁的公平性

synchronized不可以响应中断,锁的获取只能依靠系统调度

存在位置

ReentrantLock是API级别

synchronized是JVM级别

底层实现

synchronized是同步阻塞式的,采用悲观并发策略

ReentrantLock时同步非阻塞式的,采用乐观并发策略

hasCode,equals的了解

hasCode方法是JVM计算对象的哈希码的方法,计算结果会放在对象头的哈希码字段中

equals是常用的对象对比方法

重写equals,需要重写hashCode

equals返回true,hashCode也返回相等的整数

equasl返回false,hasCode返回不一定相等

hashCode相等,equals对比不一定相等

hashCode不相等,equals返回false

JVM

java对象在jvm的组成

对象头

自身运行数据

哈希码

GC分代年龄

锁状态标志

线程锁

偏向线程ID

偏向时间戳

类型指针

对象指向元数据的指针

实例数据

对齐字节

双亲委派模型的概念

双亲委派模型发生在类加载的过程中

当前类不直接负责加载,将类依次递归交给父加载器进行加载

若父加载器都不能加载,则当前类负责加载

如果我不想用这个双亲加载模型,怎么操作

自定义类加载器,重载loadClass方法

数据库

延迟加载是什么?Mybatis 是否支持延迟加载?

延迟加载

符合查询条件的结果只加载满足要求的部分

若信息需要更详细则再查询从关联表

延迟加载配置

查询语句中开启fetchType

全局配置文件中

开启lazyLoadingEnabled(开启全局延迟加载)

关闭aggressiveLazyLoading

开启lazyLoadTriggerMethods

select语句是怎么执行的

连接器

客户端通过账户密码进入到mysql服务器层中

查询缓存

查询时候执行过此条select语句

若执行过,直接返回缓存结果

若未执行过,进入第三步

分析器

词法分析

语法分析

优化器

通过选择索引实现查询速度的优化

执行器

操作引擎,进行查询操作并返回结果

Spring

spring的作用域

singleton(多用于无状态)

prototype(多用于有状态)

session

request

global session

spring的bean线程安全吗

prototype以及request再每次被调用会产生新对象,所以是线程安全的

无状态的singleton线程安全,有状态的singleton线程不安全

session以及global session会造成线程竞争

设计模式

装饰者模式的原理实现以及java中使用场景

原理以及实现

装饰者与被装饰者有一致的行为流程

定义一个接口,接口方法为一致的行为流程

装饰者与被装饰者实现同一个接口,并重写方法实现自身逻辑

当需要装饰时,传入被装饰者到装饰者的实现逻辑中,并返回装饰者的对象

使用场景

java的IO相关类

算法

字符串统计最后一个单词的长度(leetcode58)

题目

给定一个仅包含大小写字母和空格 " " 的字符串,返回其最后一个单词的长度。

如果不存在最后一个单词,请返回 0 。

样例

输入:"Hello World"

输出:5

解法

倒序遍历去除字符串最后的所有空格

定义计数器缓存长度

循环直到遇到空格,计数器自增

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75598.html

相关文章

  • 前端面试总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    pumpkin9 评论0 收藏0
  • 前端面试总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    Tychio 评论0 收藏0
  • 前端面试总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    Carson 评论0 收藏0
  • 前端面试总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...

    muzhuyu 评论0 收藏0
  • java 基础 - 收藏集 - 掘金

    摘要:基础知识复习后端掘金的作用表示静态修饰符,使用修饰的变量,在中分配内存后一直存在,直到程序退出才释放空间。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 Java 学习过程|完整思维导图 - 后端 - 掘金JVM 1. 内存模型( 内存分为几部分? 堆溢出、栈溢出原因及实例?线上如何排查?) 2. 类加载机制 3. 垃圾回收 Java基础 什么是接口?什么是抽象...

    makeFoxPlay 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<