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

面试官与水货程序员谢飞机的奇妙面试之旅(一)

面试官与水货程序员谢飞机的奇妙面试之旅本文纯属虚构仅供娱乐学习使用开场白今天要给大家分享一个有意思的面试故事。我们的主角谢飞机同志某三本院校计算机专业毕业自学Java两年自认为掌握了Java核心知识简历上写得那是相当漂亮精通Java、SpringBoot、Redis、MySQL...这不他收到了某大厂的面试邀请屁颠屁颠地就去了。第一轮面试基础扎不扎实面试官VS谢飞机面试官推了推眼镜谢飞机同学你好先简单自我介绍一下吧。谢飞机自信满满面试官好我叫谢飞机Java学习两年精通SpringBoot、Redis、MySQL参与过多个项目开发...面试官眉头一皱好的那我们开始问问题了。先来几个简单的基础题热热身。❓ 问题1HashMap的底层数据结构是什么面试官HashMap的底层数据结构是什么谢飞机这个我会HashMap底层是数组链表红黑树JDK1.8之后当链表长度超过8并且数组长度大于64时链表会转为红黑树用于提高查询效率。面试官点点头不错那你知道HashMap是线程安全的吗❓ 问题2HashMap是线程安全的吗谢飞机这个也简单不是HashMap不是线程安全的如果要线程安全可以用HashTable或者ConcurrentHashMap。面试官继续追问那ConcurrentHashMap是怎么保证线程安全的❓ 问题3ConcurrentHashMap如何保证线程安全谢飞机开始慌了这个...它...使用了...CAS...对CAS操作...还有...分段锁面试官笑而不语行那我们来问问ArrayList的问题。❓ 问题4ArrayList和LinkedList的区别谢飞机这个我会ArrayList底层是数组查询快增删慢LinkedList底层是双向链表增删快查询慢面试官微微点头不错那ArrayList扩容机制了解吗❓ 问题5ArrayList的扩容机制谢飞机糟了这个只知道一点就是...扩容是1.5倍...对吧面试官对那你知道具体是怎么扩容的吗谢飞机支支吾吾就是...调用grow方法...然后...Arrays.copyOf...复制...面试官笑了笑基础还行我们进入下一轮。第二轮面试进阶知识点面试官第二轮我们聊聊多线程和JUC相关的内容。❓ 问题1创建线程的方式有几种谢飞机这个简单三种继承Thread类、实现Runnable接口、实现Callable接口面试官那Runnable和Callable有什么区别❓ 问题2Runnable和Callable的区别谢飞机开始紧张了Runnable的run方法没有返回值Callable的call方法有返回值...而且Callable可以抛出异常...面试官点点头那你知道线程池吗❓ 问题3线程池的核心参数有哪些谢飞机背课文核心线程数、最大线程数、空闲线程存活时间、时间单位、阻塞队列、拒绝策略面试官那你说说拒绝策略有哪些❓ 问题4线程池的拒绝策略谢飞机卡住了有...AbortPolicy...还有...CallerRunsPolicy...还有一个...Discard...还有一个...DiscardOldest...对不对面试官笑对那你能解释一下这些策略的区别吗谢飞机开始胡说了AbortPolicy就是中止...CallerRunsPolicy就是让调用者运行...Discard就是丢弃...DiscardOldest就是丢弃最老的...面试官摆摆手行我们聊聊JVM。❓ 问题5JVM的内存结构了解吗谢飞机这个要完有堆...有栈...还有...方法区...本地方法栈...程序计数器...面试官那你知道堆内存分为哪几部分吗谢飞机开始编了新生代...老年代...还有...永久代不对现在好像改成元空间了...面试官勉强及格我们继续。第三轮面试框架与实战面试官第三轮我们聊聊实际项目中用到的技术。❓ 问题1SpringBoot的自动配置原理谢飞机慌了就是...SpringBootApplication...里面有个EnableAutoConfiguration...然后...Spring Boot 会读取META-INF/spring.factories...然后...自动配置...面试官追问那你知道如何排除自动配置吗❓ 问题2如何排除SpringBoot的自动配置谢飞机强行回答可以使用EnableAutoConfiguration(exclude {...})或者在application.yml中配置exclude属性面试官那聊聊Redis吧你们项目里Redis怎么用的❓ 问题3Redis的数据类型有哪些谢飞机这个我会String、Hash、List、Set、Zset还有HyperLogLog、Bitmap、Geospatial...面试官那Redis的持久化机制呢❓ 问题4Redis的持久化机制谢飞机开始编了有RDB和AOF两种RDB是定期快照...AOF是记录所有写操作...可以混合使用...面试官那你说说它们各自的优缺点谢飞机说不清楚了RDB...恢复快...但是可能丢数据...AOF...数据完整...但是文件大...慢...面试官笑了笑最后一个问题你们项目里用MySQL遇到过慢查询吗怎么优化的❓ 问题5MySQL慢查询优化谢飞机这个必须会首先用Explain分析执行计划...看有没有用索引...可以建索引...避免全表扫描...还有...优化SQL语句...加索引...分库分表...面试官满意的点点头不错最后问一下你们有用过消息队列吗❓ 问题6RabbitMQ的工作模式谢飞机只知道一种有简单模式...工作模式...发布订阅模式...路由模式...通配符模式...面试官行今天的面试就到这里。你有什么想问的吗谢飞机终于结束了那个...贵公司福利怎么样...有加班费吗...面试官微微一笑这些问题等通知再说吧。回去等通知吧有消息我们会联系你的。谢飞机内心崩溃又是一样的结局...面试结果谢飞机同志的第三次大厂面试就此结束据说后来他回去恶补了三个月终于在第四次面试时成功入职某中小厂实现了程序员的梦想。 答案解析第一轮答案1. HashMap的底层数据结构HashMap底层采用数组链表红黑树的数据结构JDK 1.8之前数组链表JDK 1.8及之后数组链表红黑树当链表长度超过8且数组长度大于64时链表会转换为红黑树查询时间复杂度从O(n)降为O(logn)。2. HashMap线程安全问题HashMap不是线程安全的在多线程环境下可能导致死循环JDK 1.7环形链表数据丢失并发修改异常线程安全替代方案Hashtable全局锁效率低Collections.synchronizedMap()ConcurrentHashMap推荐3. ConcurrentHashMap如何保证线程安全JDK 1.7Segment分段锁每个Segment继承ReentrantLockJDK 1.8放弃Segment使用CASsynchronized对每个桶单独加锁使用**CASCompare-And-Swap**保证原子性使用synchronized保证可见性4. ArrayList和LinkedList区别| 特性 | ArrayList | LinkedList | |------|-----------|------------| | 底层结构 | 动态数组 | 双向链表 | | 查询效率 | O(1) | O(n) | | 增删效率 | O(n) | O(1) | | 内存占用 | 连续内存 | 每个节点需要额外指针 | | 适用场景 | 查询多 | 增删多 |5. ArrayList扩容机制// 扩容核心方法 private void grow(int minCapacity) { int oldCapacity elementData.length; // 新容量 旧容量 旧容量/2 (即1.5倍) int newCapacity oldCapacity (oldCapacity 1); if (newCapacity - minCapacity 0) newCapacity minCapacity; // 使用Arrays.copyOf复制数据 elementData Arrays.copyOf(elementData, newCapacity); }扩容流程检查是否需要扩容扩容为原来的1.5倍使用Arrays.copyOf()复制到新数组如果还不够直接扩容到所需大小第二轮答案1. 创建线程的方式三种方式继承Thread类实现Runnable接口实现Callable接口配合FutureTask2. Runnable vs Callable| 特性 | Runnable | Callable | |------|-----------|----------| | 返回值 | void | V | | 异常 | 不可抛出 | 可抛出Exception | | 执行方法 | run() | call() | | 获取结果 | 无 | Future.get() |3. 线程池核心参数public ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 空闲线程存活时间 TimeUnit unit, // 时间单位 BlockingQueueRunnable workQueue, // 阻塞队列 ThreadFactory threadFactory, // 线程工厂 RejectedExecutionHandler handler // 拒绝策略 )4. 线程池拒绝策略AbortPolicy默认抛出RejectedExecutionExceptionCallerRunsPolicy由调用线程执行任务DiscardPolicy直接丢弃任务DiscardOldestPolicy丢弃队列最老的任务5. JVM内存结构线程私有程序计数器记录当前线程执行的字节码行号虚拟机栈方法执行的内存模型每个方法一个栈帧本地方法栈native方法使用的栈线程共享堆存放对象实例GC主要区域方法区存放类信息、常量、静态变量JDK 8后改为元空间堆内存分布新生代Eden区 Survivor区老年代JDK 8后元空间替代永久代第三轮答案1. SpringBoot自动配置原理核心注解SpringBootApplicationSpringBootApplication // 等价于 Configuration // 标注为配置类 EnableAutoConfiguration // 启用自动配置 ComponentScan // 组件扫描自动配置流程Spring Boot启动时加载META-INF/spring.factories读取EnableAutoConfiguration类的全限定名根据条件注解Conditional判断是否加载将符合条件的Bean注入容器排除自动配置SpringBootApplication(exclude {DataSourceAutoConfiguration.class}) // 或 EnableAutoConfiguration(exclude {DataSourceAutoConfiguration.class}) // 或配置文件中 spring.autoconfigure.excludeorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration2. Redis数据类型String字符串Hash哈希表List列表双向链表Set集合无序不重复ZSet有序集合HyperLogLog基数统计Bitmap位图Geospatial地理位置3. Redis持久化机制RDBRedis Database定期生成数据快照优点恢复快文件小缺点可能丢失最近数据AOFAppend Only File记录所有写操作命令优点数据完整缺点文件大恢复慢推荐策略RDBAOF混合使用4. MySQL慢查询优化步骤开启慢查询日志使用EXPLAIN分析执行计划优化策略合理使用索引避免全表扫描优化SQL语句分库分表读写分离索引优化原则区分度高的列放在前面遵循最左前缀原则避免索引失效尽量使用覆盖索引5. RabbitMQ工作模式简单模式单个生产者-消费者工作模式多个消费者竞争消息发布订阅模式Fanout Exchange路由模式Direct Exchange通配符模式Topic Exchange总结谢飞机同志的面试之旅告诉我们基础要扎实HashMap、ArrayList这些常问题必须掌握多线程要深入JUC包下的类要会用原理要懂框架要理解原理不能只会用要懂为什么项目经验要总结优化经验要能说出来希望大家在面试中不要像谢飞机要做真材实料的程序员未完待续...谢飞机的第四次面试又会发生什么呢

相关文章:

面试官与水货程序员谢飞机的奇妙面试之旅(一)

面试官与水货程序员谢飞机的奇妙面试之旅本文纯属虚构,仅供娱乐学习使用开场白 今天要给大家分享一个有意思的面试故事。我们的主角谢飞机同志,某三本院校计算机专业毕业,自学Java两年,自认为掌握了"Java核心知识"&…...

Flutter气泡框避坑指南:为什么你的conicTo总画不出完美三角形?

Flutter气泡框避坑指南:为什么你的conicTo总画不出完美三角形? 在Flutter开发中,自定义气泡框是常见的UI需求。许多开发者在使用Path.conicTo绘制三角形箭头时,常会遇到锐度控制不佳、曲线不自然等问题。本文将深入解析conicTo的工…...

Phi-3-mini-128k-instruct企业部署:Docker Compose编排vLLM+Chainlit服务

Phi-3-mini-128k-instruct企业部署:Docker Compose编排vLLMChainlit服务 1. 模型简介 Phi-3-Mini-128K-Instruct是一个38亿参数的轻量级开放模型,属于Phi-3系列的最新成员。这个模型经过精心训练,特别适合需要高效推理能力的应用场景。 核…...

谷歌破局:iPhone 与安卓跨系统文件共享新突破

Pixel 10 开启跨系统文件共享新时代谷歌近期宣布安卓和 iPhone 用户可实现快速文件共享,不过目前仅 Pixel 10 系列手机支持该功能。此前,iPhone 用户依赖苹果的 AirDrop 功能,只能在苹果设备间共享文件,安卓用户则借助 Quick Shar…...

【硬件】络石SR系列协作机械臂:商用场景下的高性价比之选

1. 为什么商用场景需要协作机械臂? 最近两年,我走访了超过50家中小型制造企业,发现一个共同痛点:人工成本越来越高,但传统工业机器人又太"笨重"。要么需要专门的围栏隔离,要么编程复杂到必须请工…...

【Python】Mu编辑器中安装Python库

今天按着《Python编程快速上手-第三版》编写程序,第8章的时候需要安装pyperclip库,以便读取剪贴板的内容,我在CMD上使用pip按照了pyperclip库,但在Mu编辑器中仍然导入不了pyperclip库,报错说找不到这库名。我尝试在IDL…...

office卸载工具教程!微软官方office卸载工具,怎么解决office卸载不干净怎么弄?Office2021家庭和学生版卸载不干净怎么办?

简介 今天介绍微软官方office卸载工具SetupProd_OffScrub,用这个卸载后直接重装就可以了! 这款由微软官方提供的SetupProd OffScrub工具,是重装Office前的最佳助手。它能一键清除电脑中顽固的Office残留数据,为你提供一个干净的安…...

从0到1构建可扩展的企业级视频平台:wvp-GB28181-pro快速部署指南

从0到1构建可扩展的企业级视频平台:wvp-GB28181-pro快速部署指南 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 在当今智能化监控系统建设中,基于GB28181协议(国家颁布的视频…...

5分钟快速部署:基于YOLO和多模态大语言模型的电动车安全检测系统(含完整源码)

5分钟极速搭建:融合YOLO与多模态大语言的电动车安全监测平台(附全栈源码) 在智慧交通和城市安全管理中,电动车违规行为检测一直是技术落地的难点。传统方案往往面临部署复杂、响应延迟和误报率高的问题。今天我们将用前沿的YOLOv8…...

PDF-Extract-Kit-1.0与Elasticsearch集成:构建文档搜索引擎

PDF-Extract-Kit-1.0与Elasticsearch集成:构建文档搜索引擎 1. 引言 想象一下,你手头有成千上万份PDF文档——可能是公司历年报告、技术文档库或者研究论文。当你想找某个特定内容时,却像大海捞针一样困难。传统的关键词搜索只能匹配文字&a…...

YOLO X Layout效果展示:精准识别文档11类元素,实测效果惊艳

YOLO X Layout效果展示:精准识别文档11类元素,实测效果惊艳 1. 开篇:文档布局分析的革命性突破 想象一下,当你面对一份复杂的PDF文档时,如何快速识别其中的表格、图片、标题等元素?传统方法往往需要人工标…...

Qwen2.5-72B开源模型教程:模型输出合规性过滤与敏感词拦截配置

Qwen2.5-72B开源模型教程:模型输出合规性过滤与敏感词拦截配置 1. 引言:为什么我们需要关注模型输出的合规性? 想象一下,你刚刚部署了一个强大的AI助手,它能帮你写代码、做分析、甚至创作故事。但某天,一…...

如何在AndroidStudio里面接入你的AI助手

1 寻找AndroidStudio的model接口处 在最左侧栏你会发现它自带的一个AI chat/agent 模型,点进去后 右下角有一个切换模型,默认的是Genimi,在Manage Model里面我们可以管理AI模型,也就是我们的接口处 不过细心的你也可以从这里的左…...

算法复杂度估算的渐进模型与统计验证的技术6

引言算法复杂度分析的重要性渐进模型与统计验证的关系文章结构与目标渐进模型基础大O符号(Big-O Notation)的定义与性质常见复杂度分类(常数、线性、对数、多项式、指数)最坏、平均与最好情况分析渐进模型的局限性理论假设与实际运…...

从实验室到产线:基于ADS1220的PT1000温度监测系统,我是如何把精度做到±0.1°C的?

从实验室到产线:基于ADS1220的PT1000温度监测系统,我是如何把精度做到0.1C的? 在工业自动化领域,温度监测的精度往往直接关系到产品质量与生产安全。去年接手某生物制药企业恒温仓储改造项目时,客户提出的0.1C监测精度…...

EasyAnimateV5应用场景:电商产品动态展示视频一键生成方案

EasyAnimateV5应用场景:电商产品动态展示视频一键生成方案 1. 电商视频制作的市场痛点与解决方案 电商行业正面临一个普遍难题:如何高效制作吸引眼球的产品展示视频?传统视频制作流程需要专业摄影师、剪辑师,从拍摄到后期至少需…...

代码审计实战

SQL注入转义函数文件上传文件包含请求头也可以插入一句话木马然后在文件包含时传入x参数即可。文件写入代码执行命令执行无回显的输出可以重定向到某个文件中,然后访问文件去查看文件读取...

KGFX嵌入式图形库:面向ESP32 Kublet设备的轻量级UI框架

1. KGFX嵌入式图形库深度解析:面向Kublet设备的轻量级UI框架 1.1 库定位与工程价值 KGFX(Kublet Graphics Library)是一个专为Kublet系列嵌入式设备设计的轻量级图形用户界面库,其核心目标是在资源受限的微控制器平台上实现高效、…...

MAA助手技术问题解决方案:从问题定位到安全规范

MAA助手技术问题解决方案:从问题定位到安全规范 【免费下载链接】MaaAssistantArknights 一款明日方舟游戏小助手 项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights 问题定位:常见故障诊断与解决方案 程序启动无响应的系…...

DASD-4B-Thinking提示工程:思维链(CoT)模板设计与应用

DASD-4B-Thinking提示工程:思维链(CoT)模板设计与应用 1. 引言 你是不是经常遇到这样的情况:向AI提问时,它要么答非所问,要么给出过于简单的答案?特别是在处理复杂问题时,模型往往…...

DDColor老照片修复:ComfyUI环境快速部署,一键上色体验

DDColor老照片修复:ComfyUI环境快速部署,一键上色体验 1. 老照片修复的新选择 翻开泛黄的相册,那些黑白老照片承载着珍贵的记忆。传统的人工上色方法不仅耗时费力,而且效果难以保证。现在,借助DDColor和ComfyUI的组合…...

Cogito-V1-Preview-Llama-3B长文本总结效果对比:技术论文与会议纪要

Cogito-V1-Preview-Llama-3B长文本总结效果对比:技术论文与会议纪要 面对动辄几十页的技术文档、冗长的会议记录,你是不是也常常感到头疼?信息量太大,关键点淹没在细节里,想要快速抓住核心,往往需要花费大…...

R语言实战:5种组间多重比较方法全解析(附代码示例)

R语言实战:5种组间多重比较方法全解析(附代码示例) 在科研数据分析和商业决策支持中,我们常常需要比较多个组别之间的差异。方差分析(ANOVA)虽然能告诉我们各组均值是否存在显著差异,但它无法具体指出哪些组之间存在差…...

从‘看懂’到‘动手’:DINOv3和SAM3如何悄悄改变AI产品经理的PRD写法?

DINOv3与SAM3:AI产品经理的下一代PRD设计指南 当视觉AI从"识别物体"进化到"理解场景语义并执行交互操作",产品设计的底层逻辑正在被重构。作为AI产品经理,我们不再只是描述功能按钮和流程图,而是需要思考如何…...

计算机毕业设计hadoop+spark股票行情预测系统 量化交易分析 股票推荐系统 股票爬虫 大数据毕业设计(源码+文档 +PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 技术范围:Sprin…...

Qwen-Image-Edit-F2P在MySQL数据库中的图像存储方案

Qwen-Image-Edit-F2P在MySQL数据库中的图像存储方案 1. 引言 当你用Qwen-Image-Edit-F2P生成了一张惊艳的人像图片后,接下来会遇到一个很实际的问题:这些图片该怎么存?特别是当生成数量越来越多,手动保存和管理就变得非常麻烦。…...

手把手教你用RM500Q-GL模块搭建5G通信电路(含M.2 B Key接口详解)

从零构建5G通信硬件:RM500Q-GL模块与M.2 B Key接口实战指南 在物联网和边缘计算爆发的今天,5G通信能力已成为智能硬件产品的标配。但对于大多数嵌入式开发者而言,从选型到实现仍存在诸多技术门槛。本文将带您深入RM500Q-GL模块的应用实践&…...

AEGIS:无工具调用可免检——AI代理的预执行防火墙与审计层

大家读完觉得有帮助记得有帮助记得关注和点赞!!!摘要。​ AI代理越来越多地通过外部工具采取行动:它们查询数据库、执行shell命令、读写文件以及发送网络请求。然而,在当前大多数代理技术栈中,模型生成的工…...

5分钟掌握airPLS:零配置智能基线校正终极指南

5分钟掌握airPLS:零配置智能基线校正终极指南 【免费下载链接】airPLS baseline correction using adaptive iteratively reweighted Penalized Least Squares 项目地址: https://gitcode.com/gh_mirrors/ai/airPLS 在光谱分析、色谱检测和信号处理领域&…...

Rust + WebAssembly 新手完全入门指南

Rust WebAssembly 新手完全入门指南 这篇文章面向前端、Rust 开发者,只要跟着步骤就能跑通你的第一个 WebAssembly 前端组件。 WebAssembly 是什么 WebAssembly(简称 Wasm)是一种可在现代浏览器中运行的低级、紧凑、高效的二进制指令格式…...