哲寻面试(部分)(未完全解析)

睡过头了,挺不好意思的

  • Mysql要实现没有指定数据时自动插入,否则自动更新,应该怎么做?newBing: 使用 insert into … on duplicate key update … 语句,这种方法要求插入的字段有唯一索引或主键

  • 网络传输的大小端序是什么?newbing: 网络传输的大小端序是指在网络上传输数据时,数据的字节顺序是大端字节序(Big Endian)还是小端字节序(Little Endian)。大端字节序是指高位字节在前,低位字节在后,这是人类读写数值的方法。例如,数值 0x12345678 的大端字节序表示为 12 34 56 78。小端字节序是指低位字节在前,高位字节在后,这是计算机内部处理数据的方法。例如,数值 0x12345678 的小端字节序表示为 78 56 34 12。网络传输的大小端序通常是大端字节序

  • CLOSE-WAIT状态是TCP连接中的哪种状态

  • UTF-8编码是什么机制,一个英文字符占几个字节,一个汊字占几个字节?Mysql的UTF-8有什么缺陷吗?newBing:
    UTF-8编码是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用一至四个字节对Unicode字符集中的所有有效编码点进行编码,属于Unicode标准的一部分。
    一个英文字符占一个字节,一个汉字占3到4个字节。这是因为英文字符的Unicode码在0x00-0x7F的范围内,只需要一个字节就能表示,而汉字的Unicode码在0x0800-0xFFFF的范围内,需要三个字节才能表示。
    MySQL的UTF-8有一个缺陷,就是它并不是真正的UTF-8,而是阉割版的,最长只有三个字节。这意味着它无法存储那些占四个字节的UTF-8编码,例如emoji字符或者复杂的汉字。这会导致存储异常或乱码。为了解决这个问题,MySQL引入了utf8mb4编码,它是真正的UTF-8编码,可以存储四个字节的UTF-8编码。

  • HTTP转为WebSocket时要发什么命令?newBing: HTTP转为WebSocket时,要发出一个包含Upgrade: websocketConnection: Upgrade等头部字段的HTTP请求,表示申请升级协议¹。服务器若支持WebSocket协议,则返回一个包含Upgrade: websocketConnection: Upgrade等头部字段的HTTP响应,表示同意升级协议。这样,HTTP连接就转为了WebSocket连接。
    ¹: HTML5 WebSocket | 菜鸟教程

  • ThreadLocal用的什么引用?弱引用的含义是什么?现在发起一次垃圾回收,它马上就会被回收吗?

  • Class与Type有什么区别?Type有几种?newBing: Class类实现了Type接口。Type是为了支持泛型而引入的,它可以表示更复杂的类型信息,如参数化类型、类型变量等。作为反射类型的Type有五种,分别是:
    Class:表示具体的类或接口,如String.class, List.class等。
    ParameterizedType:表示参数化类型,如List, Map<Integer, String>等。
    TypeVariable:表示类型变量,如T, E, K, V等。
    GenericArrayType:表示泛型数组类型,如T[], List[]等。
    WildcardType:表示通配符类型,如? extends Number, ? super Integer等。

ParameterizedType的使用示例:

package type;import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;public class ReflectTestBean {List<String> list1;List list2;Map<String, Integer> map1;Map map2;public static void main(String[] args) {Class<ReflectTestBean> cls = ReflectTestBean.class;Field[] fields = cls.getDeclaredFields();for (Field field : fields) {System.out.println(field.getName() + " 是否是泛型:" + (field.getGenericType() instanceof ParameterizedType));if (field.getGenericType() instanceof ParameterizedType) {ParameterizedType fpt = (ParameterizedType) field.getGenericType();Type[] types = fpt.getActualTypeArguments();for (Type t : types) {System.out.print(t + "\t");}System.out.println();}}}
}

输出结果:

list1 是否是泛型:true
class java.lang.String	
list2 是否是泛型:false
map1 是否是泛型:true
class java.lang.String	class java.lang.Integer	
map2 是否是泛型:false
    • 如果定义一个泛型,如何获取泛型的基类?比如List<String>,你派生一个类继承List<String>,你要获取String这个参数类,应该怎么做? 面试官说这个在序列化时经常用到。
  • sleep方法与join方法有什么区别?相关知识:sleep方法不会释放锁,而join方法底层调用的是Object.wait方法,所以会释放锁。

  • 在一个while(true)的死循环里调用Thread.interrupt方法,线程会中断吗? newBing(未校验):线程的中断效果取决于线程本身的状态和处理方式:
    如果线程处于被阻塞状态(例如sleep, wait, join等),那么线程会立即退出被阻塞状态,并抛出一个InterruptedException异常。
    如果线程处于正常活动状态,那么会将该线程的中断标志设置为true,但线程会继续运行,除非线程自己检查中断标志并做出相应的处理。

  • IO多路复用的一个关键类叫Selector, 它可以让一个线程监控多个Channel的可读写事件。

  • Stream流API熟悉吗?如果现在有一堆学生对象,每个学生对象有班级属性,要实现学生按班级分组,最终得到一个Map, Map的key为班级,value为对应的学生列表,如何做?

  • CompleteFuture用过吗,它的底层是什么线程池?参考答案1ForkJoinPool.commonPool() CompleteFuture执行中遇到异常可以怎么处理

  • 使用Guava作为内存缓存时,如何保证数据库与它的一致性?newBing: 使用 CacheLoader 来加载数据,当缓存中不存在数据时,会自动调用 load 方法从数据库中获取,并写入缓存。这样可以保证缓存中的数据是最新的。
    使用 expireAfterWrite 或 expireAfterAccess 来设置缓存的过期时间,当缓存中的数据超过一定时间没有被写入或访问时,会自动失效,下次读取时会重新从数据库中获取。
    使用 maximumSize 或 maximumWeight 来设置缓存的最大容量或权重,当缓存中的数据达到或接近最大值时,会根据最近最少使用(LRU)算法清除一些缓存项,释放空间。
    使用 invalidate 或 invalidateAll 方法来显式清除缓存中的某个键或全部键,当数据库中的数据发生变化时,可以手动删除对应的缓存项。

  • Spring默认的序列化工具是Jackson,如果想换成Gson或者FastJson应该怎么做?newBing: 如果想换成Gson或者FastJson,你需要先移除SpringBoot默认的jackson依赖,然后添加Gson或者FastJson的依赖。你还需要提供自定义的HttpMessageConverter来配置Gson或者FastJson的特性。
    SpringBoot - Jackson、Gson、fastJson返回JSON数据 - CSDN博客

  • 如果Spring想让所有Controller的入参继承同一个基类,比如可以统一在这个基类做校验入参合法性等,应该如何实现?

  • AOP表达式里切所有Controller类,表达式应该怎么写?newBing: 使用@annotation注解,匹配所有带有@Controller或者@RestController注解的类。例如:

@Pointcut(@annotation(org.springframework.stereotype.Controller) || @annotation(org.springframework.web.bind.annotation.RestController))
  • Spring事务注解失效,可能是哪些原因引起的? newBing:Spring事务注解失效可能有以下几种原因:
    数据库本身不支持事务,比如MySQL的MyISAM引擎
    事务没有被Spring管理,比如没有用@Service或@Component等注解修饰类
    同一类中的自身方法调用,比如this.B(),此时B方法并非是代理类调用,而是直接通过原有的Bean直接调用
    方法不是Public,比如用private或protected修饰
    事物传播性问题,比如使用了PROPAGATION_NOT_SUPPORTED,PROPAGATION_NEVER,PROPAGATION_SUPPORTS这三种传播行为

  • 延时发消息,怎么实现? 答:RocketMQ。问:介绍下DelayedQueue,它支持多线程吗?newBing: DelayedQueue支持多线程,它是一个线程安全的阻塞队列,可以用于生产者消费者模式。DelayedQueue的内部使用了一个优先级队列来存储实现了Delayed接口的对象,并根据对象的剩余延迟时间进行排序。当消费者从队列中取出元素时,只有当元素的延迟时间为0或负数时,才能获取到该元素,否则会阻塞等待 。DelayedQueue可以用于实现定时任务,比如ScheduledThreadPoolExecutor就是利用了DelayedQueue来保存和执行任务。

  • 作为架构师,你有写过哪些出彩的组件


  1. 异步编程利器:CompletableFuture详解 |Java 开发实战 ↩︎

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

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

相关文章

Ubuntu下安装nginx服务,实现通过URL读取ubuntu下图片

1.安装nginx包 sudo apt update sudo apt install nginx 2.安装完成后系统自动启动nginx sudo systemctl status nginx 查看nginx服务的状态 3.开启防火墙上的HTTP服务端口80 sudo ufw allow ‘Nginx HTTP’ 4.在浏览器输入 http://localhost 看到nginx的欢迎界面&#xff0c;…

【Unity3D】UI Toolkit简介

1 前言 UI Toolkit 是一种基于 Web 技术的 GUI 框架&#xff0c;是为了解决 UGUI 效率问题而设计的新一代 UI 系统&#xff08;UGUI 的介绍详见→UGUI概述&#xff09;。与 UGUI 不同&#xff0c;UI Toolkit 没有采用 GameObject 的方式&#xff0c;而是参考了 Web 技术的 XML …

stable diffusion实践操作-随机种子seed

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、seed是什么&#xff1f;二、使用步骤1.多批次随机生成多张图片2.提取图片seed3. 根据seed 再次培养4 seed使用4.1 复原别人图4.1 轻微修改 三、差异随机种子1. webUI位置2. 什么是差异随机种子3.使用差异…

什么是jvm

一、初识JVM&#xff08;虚拟机&#xff09; JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Jav…

Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 systemctl stop fi…

BTC价格预测:灰度突如其来的胜利是否会打破“九月魔咒”?

加密市场即将进入第三季度交易的最后阶段&#xff0c;由于9月份被视为是比特币的下跌时期&#xff0c;大多数投资者都预测加密货币之王将会进一步下跌。然而&#xff0c;事情却发生了逆转&#xff0c;灰度突如其来的胜利是否会打破“九月魔咒”&#xff1f; 受该事件影响&#…

2023年最新一面二面王炸java八股文面试题--持续更新

阿里&#xff0c;飞猪&#xff0c;比亚迪&#xff0c;海康&#xff0c;极兔快递&#xff0c;跨越速运&#xff0c;平安壹钱包&#xff0c;小天才&#xff0c;信泰寿险&#xff0c;招银网络&#xff0c;同花顺等 一面&#xff1a;技术面 1. 一面首先简单了解下你的项目经历&…

python实现的一些方法,可以直接拿来用的那种

1、日期生成 很多时候我们需要批量生成日期&#xff0c;方法有很多&#xff0c;这里分享两段代码 获取过去 N 天的日期&#xff1a; import datetimedef get_nday_list(n):before_n_days []for i in range(1, n 1)[::-1]:before_n_days.append(str(datetime.date.today() …

Flutter:自定义组件的上下左右弹出层

背景 最近要使用Flutter实现一个下拉菜单&#xff0c;需求就是&#xff0c;在当前组件下点击&#xff0c;其下方弹出一个菜单选项&#xff0c;如下图所示&#xff1a; 实现起来&#xff0c;貌似没什么障碍&#xff0c;在Flutter中本身就提供了弹出层PopupMenuButton组件和show…

BlockUI专栏目录

文章作者&#xff1a;里海 来源网站&#xff1a;王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C-CSDN博客 简介&#xff1a; BlockUI是一个设计NX对话框的工具&#xff0c;是官方推荐使用的对话框制作方法&#xff0c;能够与NX自身风格相统一&#xff0c;并且在实际…

微服务-sentinel详解

文章目录 一、前言二、知识点主要构成1、sentinel基本概念1.1、资源1.2、规则 2、sentinel的基本功能2.1、流量控制2.2、熔断降级 3、控制台安装3.1、官网下载jar包3.2、启动控制台 4、项目集成 sentinel4.1、依赖配置4.2、配置文件中配置sentinel控制台地址信息4.3、配置流控4…

Python之父加入微软三年后,Python嵌入Excel!

近日&#xff0c;微软传发布消息&#xff0c;Python被嵌入Excel&#xff0c;从此Excel里可以平民化地进行机器学习了。只要直接在单元格里输入“PY”&#xff0c;回车&#xff0c;调出Python&#xff0c;马上可以轻松实现数据清理、预测分析、可视化等等等等任务&#xff0c;甚…

音频基本知识

声音传播方式: 1)声音的传播需要介质,在真空中不能传播; 2)声波属于纵波,即如下图传播方向与振动方向一致; 声音速度: 1)常温常压下,一般空气速度为340m/s; 2)温度越高,声速越大; 3)液体、固体的传播速度比空气快; 人耳可接收到的频域范围: 1)通常范围…

Ansible自动化运维工具(三)

目录 Ansible 的脚本 --- playbook 剧本 ​编辑2.vars模块实战实例 3.指定远程主机sudo切换用户 4.when模块实战实例 5.with_items迭代模块实战实例 6.Templates 模块实战实例 &#xff08;1&#xff09;先准备一个以 .j2 为后缀的 template 模板文件&#xff0c;设置引用…

链表OJ练习(2)

一、分割链表 题目介绍&#xff1a; 思路&#xff1a;创建两个链表&#xff0c;ghead尾插大于x的节点&#xff0c;lhead尾插小于x的节点。先遍历链表。最后将ghead尾插到lhead后面&#xff0c;将大小链表链接。 我们需要在创建两个链表指针&#xff0c;指向两个链表的头节点&…

Node基础and包管理工具

Node基础 fs 模块 fs 全称为 file system&#xff0c;称之为 文件系统&#xff0c;是 Node.js 中的 内置模块&#xff0c;可以对计算机中的磁盘进行操作。 本章节会介绍如下几个操作&#xff1a; 1. 文件写入 2. 文件读取 3. 文件移动与重命名 4. 文件删除 5. 文件夹操作 6. …

python“魂牵”京东商品历史价格数据接口(含代码示例)

要通过京东的API获取商品详情历史价格数据&#xff0c;您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过京东开放平台API获取商品详情历史价格数据&#xff1a; 首先&#xff0c;确保您已注册成为京东开放平台的开发者…

[SpringBoot3]博客管理系统(源码放评论区了)

八、博客管理系统 创建新的SpringBoot项目&#xff0c;综合运用以上知识点&#xff0c;做一个文章管理的后台应用。依赖&#xff1a; Spring WebLombokThymeleafMyBatis FrameworkMySQL DriverBean Validationhutool 需求&#xff1a;文章管理工作&#xff0c;发布新文章&…

(数字图像处理MATLAB+Python)第十一章图像描述与分析-第五、六节:边界描述和矩描述

文章目录 一&#xff1a;边界描述&#xff08;1&#xff09;边界链码A&#xff1a;概述B&#xff1a;边界链码改进C&#xff1a;程序 &#xff08;2&#xff09;傅里叶描绘子A&#xff1a;概述B&#xff1a;程序 二&#xff1a;矩描述&#xff08;1&#xff09;矩A&#xff1a;…

SpringBoot-学习笔记(基础)

文章目录 1. 概念1.1 SpringBoot快速入门1.2 SpringBoot和Spring对比1.3 pom文件坐标介绍1.4 引导类1.5 修改配置1.6 读取配置1.6.1 读取配置信息1.6.2 读取配置信息并创建类进行封装 1.7 整合第三方技术1.7.1 整合JUnit1.7.1 整合Mybatis1.7.1 整合Mybatis-Plus1.7.1 整合Drui…