当前位置: 首页 > news >正文

中厂,面试就问了4道题,凉了!

你好,我是田哥

所谓的金三银四,已变成铜三铁四了。很多人基本上莫有面试机会,更可惜的是机会有了,却没有把握住。

加入我知识星球:免费做简历优化、简历包装、模拟面试...

今天早上,一个朋友和我说面试中被问了下面四道题目,最后一道是真的搞不定。

条件:五年工作,普通本科,基本在外包

面一家中厂,期望薪资24K

面试结果:就问了四个题,前面三个题回答的马马虎虎,最后一道完全不知如何下手,凉了!

1:MySQL性能优化方法有哪些?

MySQL性能优化方法包括以下几个方面:

1. 优化SQL语句:

SQL语句是MySQL性能优化的重要方面。优化SQL语句可以提高查询效率和减少资源消耗。有以下几个方法:避免使用SELECT *,避免使用子查询,使用索引,使用JOIN代替子查询等。

2. 配置MySQL服务器参数:

MySQL服务器参数的设置直接影响MySQL的性能,包括缓存大小、连接数、线程池大小等。根据实际应用场景,合理配置MySQL服务器参数可以提高MySQL的性能。

3. 数据库表结构优化:

数据库表结构设计的好坏直接影响MySQL的性能。应该尽量避免使用大量的NULL值、重复的列、过多的索引等。

4. 数据库表分区:

将大的数据库表分区可以提高MySQL的性能。分区可以减少数据检索时的扫描范围,从而提高查询效率。

5. 使用缓存技术:

使用缓存技术可以减少数据库访问次数,提高MySQL的性能。常见的缓存技术包括Memcached和Redis。

6. 数据库读写分离:

将读写操作分离可以提高MySQL的性能。读操作可以分配到从服务器,写操作可以分配到主服务器。这样可以提高MySQL的并发性能。

7. 使用分布式数据库:

使用分布式数据库可以提高MySQL的性能。分布式数据库将数据分配到多个节点,可以提高MySQL的并发性能和可扩展性。

总之,对于MySQL的优化来说,需要根据具体情况进行优化,从SQL语句优化、服务器参数配置、数据库表结构优化等多个方面入手,才能提高MySQL的性能。

2:分布式事务实现方案有哪些?

常见的分布式事务实现方案有以下几种:

1. 两阶段提交(Two-Phase Commit,2PC)

两阶段提交是最常用的分布式事务实现方案之一,主要思想是将事务分为两个阶段,第一阶段是准备阶段,第二阶段是提交阶段。在准备阶段,所有参与者向协调者发送事务准备请求,协调者收到请求后向所有参与者发送准备请求,如果所有参与者都准备就绪,则进入提交阶段,否则回滚事务。

优点:实现简单,可靠性高。

缺点:存在单点故障,性能较差,容易出现阻塞。

2. 三阶段提交(Three-Phase Commit,3PC)

三阶段提交是对两阶段提交的改进,主要思想是在两阶段提交的基础上增加一个超时机制。在准备阶段,如果协调者接收到参与者的准备请求后一段时间内没有收到提交请求,则会向参与者发送中止请求,参与者接收到中止请求后回滚事务。

优点:解决了两阶段提交的阻塞问题,容错性更好。

缺点:实现复杂,性能较差。

3. 补偿事务(Compensating Transaction)

补偿事务是一种基于业务逻辑的分布式事务实现方案,主要思想是在每个参与者上定义一个补偿事务,当事务出现异常时,执行相应的补偿事务以保证数据的一致性。

优点:实现简单,可靠性高。

缺点:需要对业务逻辑进行深入分析,复杂度较高。

4. 基于消息的最终一致性(Message-Based Eventual Consistency)

基于消息的最终一致性是一种异步的分布式事务实现方案,主要思想是在每个参与者上定义一个消息队列,将事务操作转化为消息发送到队列中,通过消息的异步通信实现最终一致性。

优点:实现简单,性能高。

缺点:对消息队列的可靠性和性能要求较高。

5. Paxos算法

Paxos算法是一种基于消息传递的一致性算法,用于解决分布式系统中的一致性问题。Paxos算法可以用来实现分布式事务,其主要思想是通过选举一个领导者来协调事务的执行。

优点:实现简单,容错性高。

缺点:性能较差,需要多次消息传递。

3:JVM性能调优手段有哪些?

1. 内存调优:

JVM的内存管理是非常重要的一方面,可以通过调整JVM的内存参数来优化JVM的性能,如-Xms(初始堆大小)、-Xmx(最大堆大小)、-Xmn(年轻代大小)、-XX:PermSize(永久代大小)等。

2. 垃圾回收调优:

JVM的垃圾回收机制是JVM性能调优的一个重要方面。可以通过调整垃圾回收器的类型、参数以及对不同的对象采用不同的垃圾回收策略等方式来优化JVM的垃圾回收性能。

3. 线程调优:

线程是JVM的重要组成部分,可以通过调整线程的数量、优先级、调度策略等方式来优化JVM的性能。

4. 类加载调优:

类加载是JVM的一个重要部分,可以通过调整类加载器的缓存策略、使用预编译技术、优化类的加载顺序等方式来优化JVM的性能。

5. JIT调优:

JIT(即时编译器)是JVM的重要组成部分,可以通过调整JIT的优化级别、选择适合的编译器等方式来优化JVM的性能。

6. I/O调优:

I/O操作是JVM常用的操作之一,可以通过调整I/O缓存、选择合适的I/O方式等方式来优化JVM的性能。

7. 数据库连接池调优:

JVM通常会涉及到数据库连接,可以通过调整数据库连接池的大小、连接超时等方式来优化JVM的性能。

8. 网络调优:

JVM在网络通信方面也非常重要,可以通过调整网络缓存、调整网络传输方式等方式来优化JVM的性能。

4:什么是LRU算法?用java写一个LRU算法

RU算法是一种缓存淘汰策略,Least Recently Used的缩写,即最近最少使用。

实现思路:

  1. 创建一个双向链表,用于存储数据。

  2. 创建一个hashmap,用于存储数据的key和对应的节点。

  3. 当数据被访问时,如果在hashmap中存在对应的节点,则将该节点移动到链表头部。

  4. 当链表满时,删除链表尾部的节点。

Java代码实现:

/*** @author tianwc 公众号:java后端技术全栈、面试专栏* @version 1.0.0* @date 2023年04月23日 14:14* 博客地址:<a href="http://woaijava.cc/">博客地址</a>**/
public class LRUCache<K, V> {private int capacity; // 缓存容量private Map<K, Node<K, V>> map; // 缓存存储结构private Node<K, V> head; // 链表头部private Node<K, V> tail; // 链表尾部public LRUCache(int capacity) {this.capacity = capacity;map = new HashMap<>(capacity);head = new Node<>(null, null);tail = new Node<>(null, null);head.next = tail;tail.prev = head;}public V get(K key) {Node<K, V> node = map.get(key);if (node == null) {return null;}// 将访问的节点移动到链表头部remove(node);addFirst(node);return node.value;}public void put(K key, V value) {Node<K, V> node = map.get(key);if (node != null) {// 更新节点值,并移动到链表头部node.value = value;remove(node);addFirst(node);} else {node = new Node<>(key, value);map.put(key, node);// 添加到链表头部addFirst(node);// 如果容量已满,删除链表尾部节点if (map.size() > capacity) {map.remove(tail.prev.key);remove(tail.prev);}}}private void addFirst(Node<K, V> node) {node.next = head.next;node.prev = head;head.next.prev = node;head.next = node;}private void remove(Node<K, V> node) {node.prev.next = node.next;node.next.prev = node.prev;}private static class Node<K, V> {K key;V value;Node<K, V> prev;Node<K, V> next;Node(K key, V value) {this.key = key;this.value = value;}}
}

使用示例:

LRUCache<Integer, String> cache = new LRUCache<>(3);
cache.put(1, "one");
cache.put(2, "two");
cache.put(3, "three");
cache.put(4, "four");
System.out.println(cache.get(1)); // 输出null
System.out.println(cache.get(2)); // 输出"two"
cache.put(5, "five");
System.out.println(cache.get(3)); // 输出null
System.out.println(cache.get(4)); // 输出null
System.out.println(cache.get(5)); // 输出"five"

输出结果:

null
two
null
null
five

每个面试官都有自己的面试套路,有的人一上来从基础开始,有的人却是从项目开始,还有的人是从你自我介绍内容开始,....

文中的这位朋友是从自我介绍中开始的,因为自我介绍中提到自己有性能调优经验,于是面试官一开始就问性能优化方面,看到她这些题的回答的不怎么样,于是也猜到就是为了吹牛逼而搞上去的“性能调优经验”。

再次,提醒大家,不管是简历内容,还是自我介绍内容,都要慎重,千万别把自己不会写上去,千万别把不会的吹牛逼说自己会,否则,你将会浪费一次面试机会。

好了,今天就分享这么多,我们下期再见,记得点赞收藏

题外话:如果有需要简历修改、简历优化、简历包装、面试辅导、模拟面试、技术辅导、技术支持等,欢迎加我微(tj20120622)。

我的个人技术博客:http://woaijava.cc/

回复77 ,获取《面试小抄2.0版》

回复电子书,获取后端必读的200本电子书籍。

推荐文章

手把手教你写简历,包装、优化!

面试不问java,问MySQL,如何破局?

MySQL 开发规范,非常详细,建议收藏!

手把手教:如何准备面试!

用Spring Boot搞了个医院项目,附源码!

应届生,实力已超6年,太卷了!

相关文章:

中厂,面试就问了4道题,凉了!

你好&#xff0c;我是田哥 所谓的金三银四&#xff0c;已变成铜三铁四了。很多人基本上莫有面试机会&#xff0c;更可惜的是机会有了&#xff0c;却没有把握住。 加入我知识星球&#xff1a;免费做简历优化、简历包装、模拟面试... 今天早上&#xff0c;一个朋友和我说面试中被…...

22.轮播模块

学习要点&#xff1a; 1.轮播模块 本节课我们来开始了解 Layui 的内置模块&#xff1a;轮播模块。 一&#xff0e;轮播模块 1. 轮播模块&#xff0c;即跑马灯等轮播交互场景&#xff0c;先来看下基本设置&#xff1b; <div id"test" class"layui-carousel&qu…...

MYSQL命令小总结

一、创建查看 1.输入cmd&#xff0c;打开控制器&#xff0c;输入如下&#xff0c;打开MYSQL C:\Users\ASUS> mysql -u root -p 2.查看已有数据库 mysql> show databases; 3.建立数据库 4.使用数据库 use englishword;5.建立表单 CREATE TABLE user ( id INT primar…...

Java常见开发工具和Object类

Java是一种面向对象的编程语言&#xff0c;被广泛应用于各种应用程序和软件开发中。在Java开发过程中&#xff0c;使用一个好的开发工具可以大大提高开发效率和代码质量。Eclipse是一个功能强大、灵活易用的Java集成开发环境&#xff08;IDE&#xff09;&#xff0c;被广泛使用…...

Linux 配置YUM源(FTP方式获取软件源、使用阿里云yum源、同时使用本地源与在线源)YUM获取安装包并生成YUM软件仓库

YUM介绍 YUM&#xff08;yellow dog updater modified&#xff09; 基于RPM包构建的软件更新机制 自动解决依赖关系 yum软件仓库集中管理软件包 RPM软件包的来源 centos发布的RPM包集合第三方组织发布的RPM包集合用户自定义的RPM包集合 软件仓库的提供方式 FTP服务&#xff1a;…...

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…...

养老保障金查询系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87700421 更多系统资源库…...

国考省考行测:词句理解,词的对象指代,就近原则,主语一致法,语意语境分析上下文找出指代含义

国考省考行测&#xff1a;词句理解&#xff0c;词的对象指代&#xff0c;就近原则&#xff0c;主语一致法&#xff0c;语意语境分析上下文找出指代含义 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国…...

部署YUM仓库

部署YUM仓库 YUM概述软件仓库的提供方式RPM软件包的来源FTP源的配置方法本地源配置方法在线源配置方法本地源和在线源一起使用的方法数据包缓存方法 自己配置本地yum源时需要使用createrepo来生成依赖关系库 YUM概述 YUM(Yellow dog Updater Modified) 基于RPM包构建的软件更…...

SpringBoot框架(邮件发送Mail|持久层框架JPA|Extra前后端分离跨域处理|接口管理Swagger)这一篇就够了(超详细)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…...

chatGPT对话R语言

文章目录 R语言介绍R语言基本语法R语言常用函数有哪些R语言数据结构向量矩阵数组和列表数组列表 数据框因子 R如何导入数据如何在R语言中导出数据&#xff1f;R语言图形绘制描述性统计描述统计也可以这样来计算 统计推断配对设计t检验样本均数和总体均数t检验两&#xff08;独立…...

代码随想录--字符串--替换空格题型

①这道题可以直接申请一个临时数组&#xff0c;然后遍历字符串&#xff0c;是空格则加入20%&#xff0c;最后再把临时数组转化为字符串。 怎么把一个数组转化为字符串? 如数组arry[]&#xff0c; string newstr new string(arry,0,arry.size()-1); return newstr; 而且临时数…...

Spring JDBC和事务控制

目录 Spring JDBC 和 事务控制主要内容Spring 整合 JDBC 环境构建项目添加依赖坐标添加 jdbc 配置文件编写 spring 配置文件配置数据源C3P0 数据源配置DBCP 数据源配置 模板类配置Spring JDBC 测试 &#xff08;入门&#xff09;创建指定数据库创建数据表使用 JUnit 测试JUnit …...

【音视频第16天】详解STUN协议

一个webRTC传输协议搞得自己云里雾里的。现在主动攻克一下。先看看STUN协议。好&#xff0c;我们开始吧 目录 1.讲讲什么是NAT&#xff1f;2.NAT有啥问题&#xff1f;3.四种NAT类型4.STUN Server5.TURN ServerSTUN和TURN的实现&#xff1a;什么是STUN&#xff1f;为什么需要ST…...

C++算法初级11——01背包问题(动态规划2)

C算法初级11——01背包问题&#xff08;动态规划2&#xff09; 文章目录 C算法初级11——01背包问题&#xff08;动态规划2&#xff09;问题引入0-1背包问题分析0-1背包问题的形式化分析优化 问题引入 辰辰采药 辰辰是个天资聪颖的孩子&#xff0c;他的梦想是成为世界上最伟大…...

Python 库大全(下)

格式化输出 模块 reprlib 提供了一份定制的 repr()&#xff0c;用于简洁 地展示各种大的或者多层嵌套的容器变量&#xff1a; >>> import reprlib >>> reprlib.repr(set(\supercalifragilisticexpialidocious\)) "{\a\, \c\, \d\, \e\, \f\, \g\, ...…...

如何用链表实现LRU缓存淘汰算法

链表学习 一、 缓存1.1缓存介绍1.2 缓存策略 二、链表结构2.1 单链表2.2 循环链表2.3 双向链表2.4 双向循环链表2.5 链表与数组性能对比 三、如何基于链表实现LRU缓存淘汰算法 一、 缓存 1.1缓存介绍 缓存是一种提高数据读取性能的技术&#xff0c;在硬件设计、软件开发中都有…...

【01】数据结构与算法基础-数据、数据元素、数据项和数据对象 | 数据类型和抽象数据类型 | 抽象数据类型的表示和C++实现

目录) 0.数据结构的研究内容1.数据、数据元素、数据项和数据对象1.1数据1.2数据元素(Data element)和数据项1.3数据项1.4数据对象1.5数据结构(Data Structure)1.6逻辑结构的种类1.7存储结构的种类2.数据类型和抽象数据类型2.1数据类型(Data Type)2.2抽象数据类型(Abstract …...

PHP匿名类的使用场景有哪些?PHP匿名类怎么用?有什么好处?PHP匿名类如何在运行时动态生成?

以下是一些使用匿名类的场景&#xff1a; 2. 简单的工厂模式&#xff1a;当需要在运行时动态创建一些简单的对象时&#xff0c;可以使用匿名类替代创建不必要的类定义和文件。 function createGreeter($name) {return new class($name) {private $name;public function __cons…...

【并发基础】一篇文章带你彻底搞懂Java线程中断的底层原理——interrupt()、interrupted()、isInterrupted()

目录 〇、Java线程中断与阻塞的区别 0.1 线程中断 0.2 线程阻塞 一、线程的中断 二、中断方法 2.1 void interrupt() 2.1.1 可中断的阻塞 2.1.2 不可中断的阻塞 2.1.3 实践案例 2.2 boolean isInterrupted() 2.3 boolean interrupted() 2.4 代码案例 三、源码分析…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...