添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
闯红灯的牛肉面  ·  日本学刊·  3 月前    · 
坐怀不乱的金针菇  ·  New Student Orientation·  1 年前    · 
奔放的水煮肉  ·  怒斩狂飙电影 - 抖音·  1 年前    · 
(opens new window)

# 考试:能力测评

作者:小傅哥
博客: https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、前言:什么是面试?

你的技术广度在哪?你的技术深度在哪?

面试 本身就一场对你能力质疑的过程,面试官必须通过考题来验证你的能力是否真实。正式因为我对你不了解,所以我要通过一些提问来得到我心里 对你的评分

如果你把面试当成是一场造火箭的演示,那也无可厚非。虽然最终可能你仍旧是80%的CRUD搬砖工,但就像没有桥墩和护栏的跨江大桥,也是没有几个人能敢上去走,即使平常我们都不是把着护栏过桥。这就像企业招聘员工,我要的就是考察出你的边界在哪,你应对风险的能力有多强。

好,这就是面试的目的!那么接下来,小傅哥也帮助你做一次 技术能力检验 考试。在100道题,考试中,看看你属于哪个范围; 在校实习生 初级工程师 中级工程师 高级工程师 还是有 大厂架构师 的潜力。加油 💪🏻

# 二、考试:准备好了吗?

  • 试卷名称 《Java 工程师 100 道考题 v1.0》 (opens new window) —— 扫描二维码答题或阅读公众号原文答题
  • 出题范围 :这是一套根据小傅哥博客【 bugstack.cn (opens new window) 】归纳出来的考试题目,用于小伙伴自己的学习成果检查。
  • 考题范围 :数据结构、算法、源码、设计模式、系统架构、中间件、网络通信、实战项目、扩展问题
  • 等级评估
    • 在校实习生:00分-30分
    • 初级工程师:30分-60分
    • 中级工程师:60分-70分
    • 高级工程师:70分-80分
    • 大厂架构师:80分+

# 三、查看:你的总排名!

考完了吗,快来查看下你的总分排行吧(动态更新Ing) —— 80分以上的小伙伴,可以找小傅哥内推!

# 四、解析:考题知识点

独生子女生娃,没救了!

小傅哥,你的100道Java考题,我只考了16分,是不是没救了!给我个答案吧!那么鉴于不少小伙伴已经考完了,那么小傅哥就做一个考题解析,方便读者可以针对自己的问题进行补充学习。

其实这些考题只是相当于在你的技术栈地图中,拎出100个检查站点,进行片段化的提问,来检查你对知识网的覆盖程度。而学习的最终目标远不是来背这些题,那样是没有多大的意义的,否则你在面对面试官时换个方向再问,可能你还是没法回答。所以更有意义的事是慢下来,不贪多,一步一个脚印的用自己的思考和实践验证学会这些内容。

好啦,小傅哥就做个这些问题的分析,如果你还没有参与考试也可以先尝试考一下,再看解答会更有感觉。

# 1. 算法(1~10)

# 01:常见的数据结构有哪些

# 02:优先队列是基于什么数据结构实现?

# 03:HashMap 解决哈希碰撞的数据结构?

# 04:ArrayDeque 实现堆扩容时需要进行几次元素拷贝?

# 05:基于数组实现的二叉堆,元素k如何计算父节点

  • 选项
    • A.k >> 1
    • B.(k + 1) << 1
    • C.(k - 1) <<< 1
    • D.(k - 1) >>> 1
  • 答案 :D
  • 解析 :基于数组实现的二叉堆所有子节点与父节点的位置关系,是子节点除以2取整,就是父节点的位置。之所以是这样的一个计算关系,因为它整个二叉堆上每一层元素在数组位置的存放上,就是一个1、2、4、8码的结构,也就是二进制结构。所以可以除以2取整计算父节点位置。那么使用二进制计算就是 (k - 1) >>> 1
  • 详细 https://bugstack.cn/md/algorithm/data-structures/2022-09-03-heap.html (opens new window)

# 06:链表删除任意元素的时间复杂度

# 07:HashMap 负载因子的使用

# 08:ThreadLocal 解决哈希碰撞的散列算法?

# 09:HashMap 链表转红黑树条件

# 10:关于 ArrayList 和 LinkedList 插入1000万个元素性能对比

# 2. 源码-Java(11~20)

# 01:JDK创建代理的方式

# 02:volatile 关键字的作用

# 03:Integer.toHexString("".hashCode()) 输出结果?

# 04:哪些是公平锁实现方式?

# 05:Synchronized 和 ReentrantLock 的描述

# 06:Thread.start()的启动过程包括?

# 07:Thread 线程状态包括?

# 08:线程池拒绝策略包括?

# 09:JDK 常用命令叙述错误的是?

# 10:JVM 虚拟机运行时数据区包括?

# 3. 源码-Spring(21~30)

# 01:Bean 对象容器使用的是?

# 02:InstantiationStrategy Bean 对象的实例化策略有哪些?

# 03:资源解析的类型包括

# 04:BeanPostProcessor 与 BeanFactoryPostProcessor 的作用范围

# 05:向虚拟机注册钩子的作用?

# 06:Aware 感知接口的实现类包括?

# 07:FactoryBean 和 BeanFacory 的用途

# 08:如何实现一个容器事件

# 09:AOP 切面如何拦截方法

# 10:哪一级存缓存放代理对象

# 4. 源码-MyBatis(31~40)

# 01:MapperProxy 的作用是什么?

# 02:解析的SQL语句存放到哪里?

# 03:池化数据源的目的是什么?

# 04:Executor 执行器提供哪些方法

# 05:MyBatis 框架中值的设置

# 06:参数的处理和结果集的封装,用到了什么设计模式

# 07:#{}与${}的区别是什么?

# 08:Insert 返回自增索引

# 09:Plugin 插件功能作用范围

# 10:缓存的作用范围

# 5. 设计模式(41~50)

# 01:设计模式分类

# 02:设计模式原则包括

# 03:多支付渠道与多支付方式,建议使用哪种设计模式

# 04:MyBatis 二级缓存对一级缓存的上层实现,使用的什么设计模式

# 05:规则树人群过滤,建议使用什么设计模式实现

# 06:不太常用的设计模式组合

# 07:模板模式的重点

# 08:建立起 MyBatis 和 Spring 的连接

# 09:各类优惠券;直减、满减、免息等包装使用,需要什么设计模式

# 10:单例模式实现方式包括

# 6. 系统架构(51~60)

# 01:创建工程框架包括

# 02:引入Dubbo到框架中,为什么需要单独分出RPC的模块层

# 03:分布式框架技术栈包括

# 04:DDD领域服务包括什么

# 05:低代码能解决什么场景问题

# 06:Zachman框架的六个观点

# 07:中台设计通常分为

# 08:中台的实现难度主要包括

# 09:非入侵的系统监控设计需要哪些技术栈

# 10:软件设计原则康威定律包括

  • 选项
    • A.组织沟通方式会通过系统设计表达出来
    • B.时间再多一件事情也不可能做的完美,但总有时间做完一件事情
    • C.线型系统和线型组织架构间有潜在的异质同态特性
    • D.大的系统组织总是比小系统更倾向于分解
  • 答案 :A、B、C、D
  • 解析 :康威定律 (康威法则 , Conway's Law) 是马尔文·康威1967年提出的:"设计系统的架构受制于产生这些设计的组织的沟通结构。"
  • 详细 https://zh.m.wikipedia.org/zh-hans/%E5%BA%B7%E5%A8%81%E5%AE%9A%E5%BE%8B (opens new window)

# 7. 中间件(61~70)

# 01:中间件分为哪些类

# 02:非业务逻辑的共性服务功能

# 03:SpringBoot Starter 如何加载自定义配置(resources/META-INF/spring.factories)

# 04:ES 查询方式

# 05:Dubbo 通信方式

# 06:数据库路由分库分表散列算法

# 07:分布式任务调度实现技术

# 08:字节码增强的框架

# 09:RPC-Dubbo 泛化调用的使用场景

# 10:IEDA Plugin 开发完成后如何提交到市场

# 8. 网络通信(71~80)

# 01:NIO 通信模式

# 02:Netty 的优势有哪些?

  • 选项
    • A.使用简单:封装了 NIO 的很多细节,使用更简单。
    • B.功能强大:预置了多种编解码功能,支持多种主流协议。
    • C.性能高:通过与其他业界主流的 NIO 框架对比,Netty 的综合性能最优。
    • D.稳定性好:Netty 修复了已经发现的所有 NIO 的 bug,让开发人员可以专注于业务本身。
  • 答案 :A、B、C、D
  • 解析 :Netty 官网描述其特点;使用方便、效率高、安全的介绍。这也是大家都喜欢使用 Netty 的原因。
  • 详细 https://netty.io/ (opens new window)

# 03:Netty 的应用场景有哪些?

# 04:Netty 高性能表现在哪些方面?

  • 选项
    • A.多线程Reactor反应器模式
    • B.内存零拷贝
    • C.内存池设计
    • D.对象池设计
  • 答案 :A、B、C、D
  • 解析 :Netty 的设计表现为;更高的吞吐量,更低的延迟、更少的资源消耗、最小化不必要的内存拷贝。
  • 详细 https://netty.io/ (opens new window)

# 05:Netty 和 Tomcat 的区别?

# 06:半包粘包协议的使用

# 07:Netty 流量整形处理类

# 08:Netty 使用 SSL 通信的作用

# 09:IM 通信;登录、验证、文件、表情、消息多协议处理

# 10:Netty ChunkedStream 数据流切块传输的目的

# 9. 实战项目(81~90)

# 01:分布式下保证幂等性实现

# 02:什么情况下分库分表

  • 选项
    • A.TPS、QPS、GMV、PV、UV等数据指标,增速较快
    • B.数据增量很大,数据库连接数扩容不能满足
    • C.存量数据较大,热数据不多
    • D.单体应用承载了过多的业务诉求,业务又增量加快
  • 答案 :A、B、D
  • 解析 :对于存量数据较大,但热数据访问不多的情况下,大部分是通过迁移来解决,而不是引入分库分表提高系统的开发成本来处理。
  • 详细 https://bugstack.cn/md/zsxq/material/interview.html (opens new window)

# 03:商品秒杀独占竞态锁

# 04:抽奖概率 0.0000001 很小如何设计

  • 选项
    • A.采用 Redis 存放一个对应概率码
    • B.建立一个超大的 HashMap 存放
    • C.通过双色球设计,每个为数是一组数字的组合
    • D.与运营沟通,调整方案
  • 答案 :A、C、D
  • 解析 :对于抽奖系统有时候运营会需要一些极小的概率的奖品,保持有但基本中不了。对于这样的情况实现方式还是蛮多的,比如开奖多少次后才投放,或者就是提供概率。而概率又太大,所以要进行一些设计比如 Redis 提供一个对应的概率码,或者双色球每一个位置又是N种组合。但不太合适建一个重大的 HashMap 来存放。
  • 详细 https://bugstack.cn/md/zsxq/material/interview.html (opens new window)

# 05:多种类型抽奖策略如何注册

# 06:A/BTest 用途

# 07:MySQL 应用连接数配置

# 08:高并发下提供给前端H5分页

# 09:项目运行较慢,重启后就好了

# 10:分库分表数据如何汇总查询(给C端用户使用)

# 10. 扩展问题(91~100)

# 01:常用的绘图工具

  • 选项
    • A.xmind
    • B.visio
    • C.draw.io
    • D.Workbench
  • 答案 :A、B、C、D
  • 解析 :xmind、visio、draw.io、workbench
  • 详细 :https://bugstack.cn/md/other/guide-to-reading.html (opens new window)

# 02:常用的开发工具

  • 选项
    • A.IntelliJ IDEA
    • B.Navicat
    • C.Docker
    • D.JD-GUI
    • E.RDM
    • F.Postman
  • 答案 :A、B、C、D、E、F
  • 解析 :常用工具系列;IntelliJ IDEAJ、Navicat、Docker、JD-GUI、RDM、Postman
  • 详细 :https://bugstack.cn/md/other/guide-to-reading.html (opens new window)

# 03:UML 类图,实现的画法

# 04:树上10只鸟开一枪还剩下几只,你会想到什么?

# 05:想把代码写好,都要包括哪些东西

# 06:如何保证需求如期交付?

  • 选项
    • A.从产品的BRD到PRD阶段开始确定预期上线时间
    • B.产品、UI设计、测试、研发、交付、预发、上线等时间线规划
    • C.每天一个固定时间开项目进度敏捷站会,对其进度,评估风险
    • D.如果是突然加需求,调整PRD等,那么需要重新进行资源协调。
  • 答案 :A、B、C、D
  • 解析 :为了保证项目的如期交付和交付质量,互联网中会从产品的BRD、PRD、研发设计、开发、测试等各个环节进行把控。
  • 详细 https://bugstack.cn/md/zsxq/material/architecture_design.html (opens new window)

# 07:什么是并发,什么是并行?

  • 选项
    • A.并发:是指如何正确、高校地控制共享资源;
    • B.并行:是指如何利用更多的资源来产生高快速的响应;
    • C.并行:是指如何正确、高校地控制共享资源;
    • D.并发:是指如何利用更多的资源来产生高快速的响应;
  • 答案 :A、B
  • 解析 :其实有一大部分研发人员,搞不懂什么是并发编程,甚至常把并发编程和分布式联系起来。但很多的分布式架构设计,并不是在压榨一台机器的性能做IO密集型运算,所以如;并发、并行、多任务、多进程、多线程、分布式系统等,很多术语在大量的编程资料中被滥用了。
  • 详细 https://bugstack.cn/md/about/study/2022-06-19-OnJava.html#%E5%9B%9B%E3%80%81%E6%B7%B1%E5%BA%A6-%E9%80%8F%E6%9E%90%E5%8E%9F%E7%90%86 (opens new window)

# 08:你觉得怎样编码更合理

# 09:你觉得我们的面试为什么像造火箭?

# 10:关于小傅哥