摘要:如果不存在最后一个单词,请返回。样例输入输出解法倒序遍历去除字符串最后的所有空格定义计数器缓存长度循环直到遇到空格,计数器自增
本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/c...
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
摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...
摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...
摘要:并总结经典面试题集各种算法和插件前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快速搭建项目。 本文是关注微信小程序的开发和面试问题,由基础到困难循序渐进,适合面试和开发小程序。并总结vue React html css js 经典面试题 集各种算法和插件、前端视频源码资源于一身的文档,优化项目,在浏览器端的层面上提升速度,帮助初中级前端工程师快...
摘要:基础知识复习后端掘金的作用表示静态修饰符,使用修饰的变量,在中分配内存后一直存在,直到程序退出才释放空间。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 Java 学习过程|完整思维导图 - 后端 - 掘金JVM 1. 内存模型( 内存分为几部分? 堆溢出、栈溢出原因及实例?线上如何排查?) 2. 类加载机制 3. 垃圾回收 Java基础 什么是接口?什么是抽象...
阅读 2225·2021-11-22 09:34
阅读 1336·2021-10-11 10:59
阅读 4428·2021-09-22 15:56
阅读 3270·2021-09-22 15:08
阅读 3404·2019-08-30 14:01
阅读 775·2019-08-30 11:16
阅读 1130·2019-08-26 13:51
阅读 2908·2019-08-26 13:43