自我介绍
kmp算法
- https://www.zhihu.com/question/21923021
- kmp算法的时间复杂度 O(n+m)
- 双指针的时间复杂度 O(n)
java
- final修饰的内容的值是引用的不可变还是引用的对象内容不可变
- 修饰类
- 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。
- 修饰方法
- 如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的
- 修饰变量
- 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
- 引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的
- 创建线程池有几种方式 4种
- 一、继承Thread类创建线程
- 定义一个类继承Thread类,并重写Thread类的run()方法,run()方法的方法体就是线程要完成的任务,因此把run()称为线程的执行体
- 创建该类的实例对象,即创建了线程对象
- 调用线程方法的start方法来启动线程
- 二、实现Runnable接口创建线程
- 定义Runnable接口的实现类,重写run()方法,run()方法的方法体就是线程要完成的任务
- 创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象
- 调用线程的run()方法来启动线程
- 三、实现Callable接口和Future创建线程
- 创建Callable接口实现类,并实现call()方法,该方法将作为线程执行体,且该方法有返回值,再创建Callable实现类的实例
- 使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值
- 使用FutureTask对象作为Thread对象的target创建并启动新线程
- 调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
- 四、通过线程器ExecutorServices类
- 新任务提交到线程池,线程池怎么处理的
- 第三步:线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务。
mysql
- like会不会走索引
- MySQL在like查询中是否使用到索引
- mysql在使用like查询的时候只有使用后面的%时,才会使用到索引
北京决策数一面(Java) 2022.3.17
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3....
- 本文转自Java 最常见 200+ 面试题全解析:面试必备(转载) 序言 在本篇文章开始之前,我想先来回答一个问题...