2021大厂Java面试真题(一).pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2021⼤⼚Java⾯试真题(⼀) 2021⼤⼚Java⾯试真题(⼀) ⼤⼚⾯试的基本流程 以下是⼀些⼤⼚⾯试的基本流程,⼤家可以参考下: 字节跳动 阿 腾讯 ⽹易游戏 ⾯试前需要准备: \1. **Java ⼋股⽂:**了解常考的题型和回答思路; \2. 算法:刷 100-200 道题,记住刷题最重要的是要理解其思想,不要死记硬背,碰上原题很难,但 ⼤多数的解题思路是相通的。 \3. **项⽬:**主要准备最近⼀家公司所负责的业务和项⽬: 项⽬的背景,为啥要做这个项⽬; 系统的演进之路,有哪⼏个阶段,每个阶段主要做了什么; 项⽬中的技术选型,在项⽬中使⽤⼀些⼯具和框架时的调研,为啥选这个;* 项⽬的亮点:就是你在项⽬中做过最⽜逼的事,复杂的需 求⽅案设计、性能优化、线上问题处理、 项⽬重构等等; \4. **架构设计:**主要是平台化的⼀些思想、DDD 领域驱动设计思想,随着经验的增加,这块会越来越 重要。 \5. **项⽬管理:**主要是在主导跨团队的项⽬时,如何⾼效的协调好各个团队的⼯作,使⽤哪些⽅法来 保障项⽬的按时交付。在项⽬遇到困难时,作为项⽬负责⼈如何应对等等。跟架构设计⼀样,这 块也是随着经验的增加越来越重要。 \6. **通⽤问题:**⼏个⽐较容易被问到的问题是:1)为什么离职;2)在上家公司哪些能⼒得到了成长; 3)平时怎么学习的? \7. **问⾯试官:**每次⾯试最后⾯试官⼀般会问有没有什么想问的,如果不知道问什么,可以问下团队 当前负责的业务是什么?主要⾯临的挑战是什么? 2021 【美团】⾯试真题: 1、Spring AOP 底层原理 aop 底层是采⽤动态代理机制实现的:接⼝+实现类 如果要代理的对象,实现了某个接⼝,那么 Spring AOP 会使⽤ JDK Proxy,去创建代 理对象。 没有实现接⼝的对象,就⽆法使⽤ JDK Proxy 去进⾏代理了,这时候 Spring AOP 会 使⽤ Cglib ⽣成⼀个被代理对象的⼦类来作为代理。 就是由代理创建出⼀个和 impl 实现类平级的⼀个对象,但是这个对象不是⼀个真正的对象, 只是⼀个代理对象,但它可以实现和 impl 相同的功能,这个就是 aop 的横向机制原理,这 样就不需要修改源代码。 2、HashMap 的底层数据结构是怎样的 ? JDK1.8 之前 JDK1.8 之前 HashMap 底层是 数组和链表 结合在⼀起使⽤也就是 链表散列。 HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - \1) hash 判断当前元素存放的位置(这⾥的 n 指的是数组的长度),如果当前位置存在 元素的话,就判断该元素与要存⼊的元素的 hash 值以及 key 是否相同,如果相同的话, 直接覆盖,不相同就通过拉链法解决冲突。 所谓扰动函数指的就是 HashMap 的 hash ⽅法。使⽤ hash ⽅法也就是扰动函数是为了 防⽌⼀些实现⽐较差的 hashCode() ⽅法 换句话说使⽤扰动函数之后可以减少碰撞。 JDK1.8 之后 22当链表长度⼤于阈值(默认为 8)时,会⾸先调⽤ treeifyBin()⽅法。这个⽅法会根据 HashMap 数组来决定是否转换为红⿊树。只有当数组长度⼤于或者等于 64 的情况下,才会 执⾏转换红⿊树操作,以减少搜索时间。否则,就是只是执⾏ resize() ⽅法对数组扩容。 3、HashMap 的扩容机制是怎样的? ⼀般情况下,当元素数量超过阈值时便会触发扩容。每次扩容的容量都是之前容量的 2 倍。 HashMap 的容量是有上限的,必须⼩于 130,即 1073741824。如果容量超出了这个 数,则不再增长,且阈值会被设置为 Integer.MAX_VALUE。 JDK7 中的扩容机制 空参数的构造函数:以默认容量、默认负载因⼦、默认阈值初始化数组。内部数组是空数 组。 有参构造函数:根据参数确定容量、负载因⼦、阈值等。 第⼀次 put 时会初始化数组,其容量变为不⼩于指定容量的 2 的幂数,然后根据负载因 ⼦确定阈值。 如果不是第⼀次扩容,则 新容量=旧容量 x 2 ,新阈值=新容量 x 负载因⼦ 。 JDK8 的扩容机制 空参数的构造函数:实例化的 HashMap 默认内部数组是 null,即没有实例化。第⼀次 调⽤ put ⽅法时,则会开始第⼀次初始化

文档评论(0)

177****7360 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体宁夏三科果农牧科技有限公司
IP属地宁夏
统一社会信用代码/组织机构代码
91640500MABW4P8P13

1亿VIP精品文档

相关文档