面试篇:杂乱篇

 String s = " ";

1. String类的常用方法有哪些?

  1. s.length():               返回字符串长度
  2. s.substring():          截取字符串
  3. s.split():                  分割字符串
  4. s.equlas():              字符串比较
  5. s.chatAt():               返回指定索引处的字符

2. 说一下synchronized底层实现原理

答:它底层是由monitor实现的,monitor是jvm级别的对象(使用c++编写的),线程获得锁需要用对象关联monitor。  monitor有三个属性:owner, entrylist, waitset.

        其中:owner是关联获得锁的线程,并且只能关联一个线程,而entrylist是关联处于阻塞状态的线程,waitset是关联处于等待状态的线程

3.线程池的七个参数是什么?执行原理是什么?

 答:七个参数:

        1. 核心线程数

        2.最大线程数

        3.线程存活时间

        4.线程存活时间的单位

        5.工作队列

        6.线程工厂

        7.拒绝策略

                        

执行原理:当一个任务来了之后,会先去判断一下核心线程数是否已满,如果没有满,直接添加到工作线程去执行,如果已经满了,则添加到阻塞队列,如果阻塞队列也满了,则判断是否达到最大线程数,如果没达到,则创建临时线程来执行,如果已经达到了最大线程数,那就直接根据拒绝策略来拒绝。

4.线程池有哪些常见的阻塞队列?

BlockingQueue有这几种类型:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、DelayedWorkQueue。

5. 线程池有哪些种类?

在JUC包下有Excutors类中提供了很多创建连接池的静态方法,常见的有四种:

1. newFixedThreadPool(int nThreads)

特点:

  • 核心线程数 == 最大线程数
  • 阻塞队列使用的是LinkedBlockingQueue
  • 适用于任务数已知,比较耗时的任务

2. newSingleThreadExcutors()

特点:

  • 核心线程数 == 最大线程数 == 1   (单线程)
  • 阻塞队列使用的是LinkedBlockingQueue
  • 适用于按照顺序执行的任务

3. newCachedThreadPool()

特点:

  • 核心线程数 == 0
  • 最大线程数 == Integer.MAX_VALUE
  • 阻塞队列为synchronousQueue
  • 适用于任务数比较密集,而且任务耗时比较短的情况(防止任务太多时,任务耗时太长,创建大量的线程占用内存)

4. newScheduledThreadPool

特点:创建一个可执行延时任务的线程池,支持定时及周期性任务执行

6.谈谈对ThreadLocal的理解

答:1.ThreadLocal可以实现资源对象的线程隔离,让每个线程各用各的资源对象,防止产生线程安全问题

       2.ThreadLocal也实现了线程内的资源共享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu18.04-arm7v架构下构建Telegraf自定义系统服务

ubuntu18.04-arm7v架构下构建Telegraf自定义系统服务 通过交叉编译后的Telegraf可执行文件使用nohup启动后,在系统重启时,有时候会忘记再把它启动起来。这个时候我们就可以将其定义成系统服务,让系统来帮忙管理。 创建telegraf.service文件 …

Chapter 1 Basic Concepts of Communication and Communication Systems

1.1 The Concept of Communication communication【通信】:It is the process of using signals to transmit messages containing information in space. To put it simply, communication is the spatial transmission of information【信息的空间传递】Information【信息】…

linux CentOS7配置docker的yum源并安装

[TOC](这里写目录标题 配置yum源Docker的自动化安装一些其他启动相关的命令: 配置yum源 使用以下命令下载CentOS官方的yum源文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清除yum缓存 yum clean all 更新yum缓存…

上升Chrome安装Vue插件vue-devtools

Chrome安装Vue插件vue-devtools的步骤如下: 打开Chrome浏览器,点击地址栏右侧的三个点图标,选择“更多工具”->“扩展程序”。在打开的扩展程序页面,点击右上角的“打开Chrome网上应用店”。在Chrome网上应用店中搜索“Vue De…

【JavaWeb】Day35.MySQL概述——数据库设计-DDL(二)

表操作 关于表结构的操作也是包含四个部分:创建表、查询表、修改表、删除表。 1.创建 语法 create table 表名( 字段1 字段1类型 [约束] [comment 字段1注释 ], 字段2 字段2类型 [约束] [comment 字段2注释 ], ...... 字段n 字段n类型 [约束] [comment …

藏不住了!这20个技术点是运维老手的秘密武器

你们好,我的网工朋友。 信息技术系统的正常运行直接关系到企业或生产的正常运行。 然而,网工经常面临以下问题:网络速度慢、设备故障和应用系统效率低。 任何信息技术系统的故障,如果不及时处理,都会产生很大的影响…

@RequestBody与@RequestParam的区别

RequestBody会将请求体中的数据,转换成对象 RequestParam会从http请求查询参数中提取数据 RequestParam和RequestBody是Spring Framework中用于处理HTTP请求的注解,它们有以下区别: 1.数据来源: RequestParam: 从HTTP请求的查询参数中提取…

P2089 烤鸡、P1706 全排列问题、P1157 组合的输出、P1036 [NOIP2002 普及组] 选数——Python代码实现(带注释)

P2089 烤鸡 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等&#xf…

【优选算法专栏】专题十六:BFS解决最短路问题(一)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

万得AI算法工程师一面面试题6道|含解析

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天…

缓存、分布式缓存、缓存的风险

为系统引入缓存的理由 在软件的开发中,引入缓存的负面作用明显大于硬件的缓存。主要由以下几个方面 从开发者角度来说引入缓存会提高系统的复杂度,因为你需要考虑缓存的失效、更新、一致性等问题(硬件缓存也存在这些问题,只是不需…

串口和 蓝牙模块HC08

串口基本认知 串行接口简称串口,也称 串行通信 接口或 串行通讯接口 (通常指 COM 接口 ),是采用串行通信方 式的 扩展接口 。串行 接口(Serial Interface )是指数据一位一位地顺序传送。其特点是 通信线路…

【LangChain学习之旅】—(16)检索增强生成:通过RAG助力大模型

【LangChain学习之旅】—(16)检索增强生成:通过RAG助力大模型 RAG 的工作原理文档加载文本转换文本分割器文本嵌入存储嵌入缓存存储向量数据库(向量存储)数据检索向量存储检索器各种类型的检索器索引总结什么是 RAG?其全称为 Retrieval-Augmented Generation,即检索增强…

Java 同步机制方法及其部分源码解读

1. synchronized 关键字 互斥锁 使用关键字synchronized修饰的方法或代码块,可以保证其修饰内容在任何时刻,最多只有一个线程可以访问,可用于控制多个线程在访问共享资源时的并发问题。 每个对象都有一把锁,每个synchronized修饰…

优秀企业都在用的企微知识库,再不搭建就晚了!

每个团队都在寻找让工作效率提升的方法。如果你想知道哪些团队能够高效地完成任务,而另一些却步履维艰,那么答案可能就是“企业微信知识库”。见过很多团队都在使用它,而且效果非常显著。如果你还没有搭建属于自己的企微知识库,可…

你真的会写接口自动化测试断言吗?

你真的会写自动化测试断言吗? 在接口测试中,断言是一项非常重要的操作,它是用来校验接口返回结果是否符合预期的一种手段。一般来说,接口测试断言大致可以分为以下几类: 状态码断言:这是最基本也是最常用的…

【C语言】汉诺塔问题

目录 一、何为汉诺塔问题? 二、汉诺塔计算规律 三、打印汉诺塔的移动路径 总结 一、何为汉诺塔问题? 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世…

16_I2C库函数

I2C库函数 1.void I2C_DeInit(I2C_TypeDef* I2Cx);2.void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);3.void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);4.void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);5.void I2C_DMACmd(I2C_Type…

BM57 岛屿数量(回溯)

对数组index的判断要放前面,要不然报数组越界异常。 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 判断岛屿数量* param grid char字符型二维数组 * return …

Unity开发者3D模型基础

术语“3D 建模”是指使用特殊软件创建对象或表面的 3D 数字表示的过程。 3D 模型可用于各种不同的目的,包括电影、视频游戏、建筑和工程。 3D 建模也是创建虚拟现实 (VR) 和增强现实 (AR) 体验工作的重要组成部分。 我们通常通过构建或获取 3D 模型并将其导入 Unit…