首页 > 其他分享 >9:00面试,9:05就出来了,问的问题有点出乎意料!

9:00面试,9:05就出来了,问的问题有点出乎意料!

时间:2024-08-29 14:59:48浏览次数:8  
标签:Netty 00 05 Spring 出乎意料 面试 Bean 内存 使用

从小厂跳槽出来,本以为能在新公司大展拳脚,没想到没多久就再次遭遇困境。

入职初期,加班成了家常便饭,尽管如此,考虑到薪酬还算可观,我并没有过多抱怨。然而,到了六月,一纸通知打破了平静——公司宣布薪资要下调百分之四十。这样一来,连基本的生活开销都成了问题。

这一连串的变故让我措手不及,原本满怀期待的心情瞬间跌入谷底。面对突如其来的挑战,我不得不重新审视自己的职业规划,并思考下一步该何去何从。

原本以为自己会在这家新公司大展拳脚,谁知道还没来得及施展抱负,就遭遇了如此重大的打击。随后便开始了无尽折磨的面试环节。

去了一家互联网公司,面试管问了一道关于分布式系统的问题,虽然我之前有所涉猎,但显然准备不足。面试官抛出问题的那一瞬间,我的大脑一片空白,完全不知道如何回答。我努力回想当时的情景,试图找到解决办法,但心里还是忐忑不安。最终没有通过面试。

最近,我开始梳理面试中遇到的知识点。从基础知识到高级应用,我逐条列出需要补足的地方。或许这次失败并不是终点,而是新旅程的起点。

总结下常用面试的知识点汇总,及一些大佬的面试资料:

Java面试:

Spring容器
  • BeanFactory vs ApplicationContext

    • BeanFactory 是Spring IoC容器的基础,用于管理Bean的生命周期,提供Bean的实例化、依赖注入等功能。
    • ApplicationContext 扩展了BeanFactory的功能,提供了国际化支持、资源文件统一读取、事件监听等功能。
  • Bean 生命周期

    • Bean的生命周期包括初始化和销毁两个阶段,Spring提供了多种回调机制来管理Bean的生命周期。
    • 初始化回调方法可以是InitializingBean接口的实现,也可以是配置文件中的自定义方法或使用@PostConstruct注解。
    • 销毁回调方法可以是DisposableBean接口的实现,也可以是配置文件中的自定义方法或使用@PreDestroy注解。
  • IoC 实现

    • Spring IoC容器的基础是org.springframework.beansorg.springframework.context包。
    • BeanFactory接口提供高级配置机制,而ApplicationContext接口提供了更多功能,如AOP集成、事件传播等。
  • AOP 实现原理

    • Spring AOP使用动态代理实现,包括JDK动态代理和CGLIB动态代理。
    • JDK动态代理适用于实现了接口的类,而CGLIB适用于未实现接口的类,通过继承方式实现动态代理。
  • 事务管理

    • Spring支持编程式事务管理和声明式事务管理。
    • 事务管理通过AOP功能实现,使用TransactionProxyFactoryBean生成代理对象,并通过TransactionInterceptor完成事务逻辑。
设计模式
  • Spring框架中运用了多种设计模式,包括但不限于:
    • 代理模式:在AOP和remoting中被广泛使用。
    • 单例模式:Spring配置文件中定义的Bean默认为单例模式。
    • 模板方法模式:如RestTemplateJmsTemplate等。
    • 前端控制器模式:Spring提供了DispatcherServlet来处理请求。
    • 视图帮助模式:Spring提供了一系列JSP标签来辅助视图处理。
    • 依赖注入模式:贯穿于BeanFactoryApplicationContext接口的核心理念。
    • 工厂模式BeanFactory用来创建对象实例。
单例实现原理
  • Spring使用单例注册表的方式创建Bean实例,注册表的缓存是ConcurrentHashMap对象。

Netty 相关内容

  • 为什么选择Netty

    • Netty具有API简单、功能强大、高度定制、高性能、成熟稳定等特点。
    • 社区活跃,版本迭代快,适合各种高性能通信场景。
  • Netty 使用场景

    • 构建高性能中间件(MQ、分布式服务框架等)。
    • 构建WebSocket协议栈等公有或私有协议栈。
    • 应用于大数据、游戏等领域内部通信。
  • 原生NIO存在的epoll bug

    • JDK 1.7版本中存在Selector空轮询问题,可能导致CPU占用率过高。
  • TCP粘包/拆包

    • 描述了TCP粘包和拆包现象及其产生的原因。
    • 提供了三种解决办法:添加包头、固定长度数据包、设置边界字符。
  • Netty线程模型

    • Netty使用EventLoop处理读写事件,保证一个连接的所有事件在一个线程中执行。
    • EventLoopGroup包含多个EventLoop,类似于ExecutorService。
  • Netty的零拷贝

    • 描述了Netty如何减少数据在内存间的拷贝,提高性能。
  • Netty内部执行流程

    • Netty使用堆外直接内存进行Socket读写,减少了内存拷贝。
    • 提供组合Buffer对象,简化多个ByteBuffer的操作。
    • 文件传输使用transferTo方法,直接将文件数据发送到Socket中。

Redis 主从同步机制

  • 全量同步:当从节点第一次连接到主节点时,会执行全量复制过程。具体步骤包括从节点发送SYNC命令、主节点生成RDB快照、发送快照到从节点等。
  • 增量同步:在全量同步完成后,主节点的新写入操作会被同步到从节点,这种方式称为增量复制。

Redis 内存使用和过期数据处理

  • 内存使用策略:根据业务需求评估所需的内存和QPS,可能采取的措施包括增加内存、使用内存淘汰策略或部署Redis集群。
  • 过期数据处理:Redis提供了设置键过期时间的功能,当键过期后,Redis会自动删除不再使用的键。

Streaming 实时推荐项目

  • 使用场景:项目使用Streaming技术进行实时推荐,通过封装Kafka的Consumer来屏蔽不同Kafka版本间的影响,支持消费多种数据源。

Kafka 特性和使用

  • 为何Kafka快速:Kafka通过零拷贝、预先分配磁盘空间等方式优化I/O效率,以及利用内存映射文件提高数据读取速度。
  • Kafka重复消费:项目中遇到过重复消费的问题,可以通过确保幂等性、使用事务等手段来解决。

MySQL 事务和MVCC机制

  • 事务特性:MySQL的事务遵循ACID原则,保证原子性、一致性、隔离性和持久性。
  • MVCC机制:MySQL的InnoDB引擎通过多版本并发控制(MVCC)来支持高并发读写操作,利用undo log和版本号来实现。

JVM 垃圾回收机制

  • 垃圾回收算法:包括标记-清除算法、复制算法、标记-压缩算法、分代收集算法等。
  • 垃圾收集器:文档中提及了CMS垃圾回收器的特点,它分为初始标记、并发标记、重新标记、并发清理四个阶段,适用于需要低延迟响应的场景。

面试内容过多就不一一列举了。感兴趣的同学可以按以下链接进行下载。 

面试宝典:

链接:https://pan.baidu.com/s/1kSXZM4BqjCi5PnocfFcQRQ?pwd=45fl 
提取码:45fl

Java面试:

深度学习面试:

大数据面试:

标签:Netty,00,05,Spring,出乎意料,面试,Bean,内存,使用
From: https://blog.csdn.net/xgq8217/article/details/141392911

相关文章

  • 鸿道Intewell实时操作系统MIPS架构生态:龙芯2K1000
    在当今快速发展的工业互联时代,实时操作系统(RTOS)扮演着至关重要的角色。实时操作系统为工业制造、能源电力、轨道交通、汽车电子等领域提供了高实时、高可靠和高效率的技术支持。实时操作系统的设计注重实时性、并行性、可靠性和功耗,通常以嵌入式形态作为智能装备或生产系统......
  • MDQ100-16-ASEMI单向整流模块MDQ100-16
    编辑:llMDQ100-16-ASEMI单向整流模块MDQ100-16型号:MDQ100-16品牌:ASEMI封装:M18批号:2024+分类:整流模块特性:整流模块、整流桥平均正向整流电流(Id):100A最大反向击穿电压(VRM):1600V恢复时间:>2000ns结温:-40℃~150℃正向峰值电压:1.05V~1.25V引脚数量:4芯片个数:4芯片尺寸:MILMDQ1......
  • 基于ST STM32G474的400W Microinverter之数位电源方案
    微型逆变器(Microinverter)是一种独立的太阳能模组,能将太阳能板产生的直流电(DC)转换为交流电(AC)。这种设备在模组阶段就能进行直流电转换和发电功率最佳化,所产生的电力以交流电形式传输,具备更高的安全性和扩充性。每个微型逆变器的输出可以合并回馈至电网或储能设备,特别适合面积较......
  • DL00489-基于深度学习的金属多轴疲劳寿命预测含数据集
    使用深度学习模型(CNN,LSTM和GRU)结合全连接层预测金属多轴疲劳寿命的代码。它处理数据集,利用高质量的数据来有效地训练和评估模型。主要功能是结合时间序列加载路径和材料力学性能对疲劳寿命进行预测。      ......
  • OpenSSH 存在输入验证错误漏洞(CVE-2019-16905) 解决
    1、下载文件:zlib-1.2.11.tar.gzopenssh-8.3p1.tar.gzopenssl-1.1.1g.tar.gz 2、解压升级包tar--no-same-owner-zxvfzlib-1.2.11.tar.gztar--no-same-owner-zxvfopenssh-8.3p1.tar.gztar--no-same-owner-zxvfopenssl-1.1.1g.tar.gz 3、编译安装zlibcdzli......
  • 一起学习LeetCode热题100道(61/100)
    61.分割回文串(学习)给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。示例1:输入:s=“aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]示例2:输入:s=“a”输出:[[“a”]]提示:1<=s.length<=16s仅由小写英文字母......
  • [AGC008F] Black Radius
    缕一缕大概思路。首先假设所有点都被喜欢。一个集合可能被多个\((u,d)\)表示出来,我们取最小\(d\),只有在全集的时候一个最小\(d\)可能会有多个\(u\)进行对应,所以我们去掉对全集的统计。接着考虑以一个点为中心的充要条件。设为\((u,d)\),首先\(d\)不能太大,否则会超出......
  • [1052] Add the ArcPy Python interpreter in VS Code
    ToaddtheArcPyPythoninterpreterinVisualStudioCode(VSCode),followthesesteps:InstallArcGISPro:EnsureyouhaveArcGISProinstalled,asitincludestheArcPylibrary.InstallVSCode:DownloadandinstallVisualStudioCodefromtheoffi......
  • 一本通题讲解:2059:【例3.11】买笔
    ​ 【题目描述】期末来临了,班长小Q决定将剩余班费xx元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为66元、55元和44元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。【输入......
  • 代码随想录算法训练营第四十三天 | 300.最长递增子序列 , 674. 最长连续递增序列 , 718.
    目录300.最长递增子序列 思路1.dp[i]的定义2.状态转移方程3.dp[i]的初始化4.确定遍历顺序 5.举例推导dp数组方法一:动态规划方法二:贪心心得收获 674.最长连续递增序列思路动态规划1.确定dp数组(dptable)以及下标的含义2.确定递推公式3.dp数组如何初始化4.......