企业级项目实战讲解!java类内部定义枚举

蚂蚁一面

⼀⾯就做了⼀道算法题,要求两⼩时内完成,给了⻓度为N的有重复元素的数组,要求输出第10⼤的数。典型的TopK问题,快排算法搞定。算法题要注意的是合法性校验、边界条件以及异常的处理。另外,如果要写测试⽤例,⼀定要保证测试覆盖场景尽可能全。加上平时刷刷算法题,这种考核应该没问题的。

蚂蚁二面

  • ⾃我介绍下呗
  • 开源项⽬贡献过代码么?(Dubbo提过⼀个打印accesslog的bug算么)
  • ⽬前在部⻔做什么,业务简单介绍下,内部有哪些系统,作⽤和交互过程说下
  • Dubbo踩过哪些坑,分别是怎么解决的?(说了异常处理时业务异常捕获的问题,⾃定义了⼀个异常拦截器)
  • 开始进⼊正题,说下你对线程安全的理解(多线程访问同⼀个对象,如果不需要考虑额外的同步,调⽤对象的⾏为就可以获得正确的结果就是线程安全)
  • 事务有哪些特性?(ACID)
  • 怎么理解原⼦性?(同⼀个事务下,多个操作要么成功要么失败,不存在部分成功或者部分失败的情况)
  • 乐观锁和悲观锁的区别?(悲观锁假定会发⽣冲突,访问的时候都要先获得锁,保证同⼀个时刻只有线程获得锁,读读也会阻塞;乐观锁假设不会发⽣冲突,只有在提交操作的时候检查是否有冲突)这两种锁在Java和MySQL分别是怎么实现的?(Java乐观锁通过CAS实现,悲观锁通过synchronize实现。mysql乐观锁通过MVCC,也就是版本实现,悲观锁可以通过select… forupdate加上排它锁)
  • HashMap为什么不是线程安全的?(多线程操作⽆并发控制,顺便说了在扩容的时候多线程访问时会造成死锁,会形成⼀个环,不过扩容时多线程操作形成环的问题再JDK1.8已经解决,但多线程下使⽤HashMap还会有⼀些其他问题⽐如数据丢失,所以多线程下不应该使⽤HashMap,⽽应该使⽤ConcurrentHashMap)怎么让HashMap变得线程安全?(Collections的synchronize⽅法包装⼀个线程安全的Map,或者直接⽤ConcurrentHashMap)两者的区别是什么?(前者直接在put和get⽅法加了synchronize同步,后者采⽤了分段锁以及CAS⽀持更⾼的并发)
  • jdk1.8对ConcurrentHashMap做了哪些优化?(插⼊的时候如果数组元素使⽤了红⿊树,取消了分段锁设计,synchronize替代了Lock锁)为什么这样优化?(避免冲突严重时链表多⻓,提⾼查询效率,时间复杂度从O(N)提⾼到O(logN))
  • redis主从机制了解么?怎么实现的?
  • 有过GC调优的经历么?(有点虚,答得不是很好)
  • 有什么想问的么?

蚂蚁三面

  • 简单⾃我介绍下
  • 监控系统怎么做的,分为哪些模块,模块之间怎么交互的?⽤的什么数据库?(MySQL)使⽤什么存储引擎,为什么使⽤InnnoDB?(⽀持事务、聚簇索引、MVCC)
  • 订单表有做拆分么,怎么拆的?(垂直拆分和⽔平拆分)
  • ⽔平拆分后查询过程描述下
  • 如果落到某个分⽚的数据很⼤怎么办?(按照某种规则,⽐如哈希取模、range,将单张表拆分为多张表)
  • 哈希取模会有什么问题么?(有的,数据分布不均,扩容缩容相对复杂 )
  • 分库分表后怎么解决读写压⼒?(⼀主多从、多主多从)
  • 拆分后主键怎么保证位置?(UUID、Snowflake算法)
  • Snowflake⽣成的ID是全局递增唯⼀么?(不是,只是全局唯⼀,单机递增)
  • 怎么实现全局递增的唯⼀ID?(讲了TDDL的⼀次取⼀批ID,然后再本地慢慢分配的做法)
  • Mysql的索引结构说下(说了B+树,B+树可以对叶⼦结点顺序查找,因为叶⼦结点存放了数据结点且有序)
  • 主键索引和普通索引的区别(主键索引的叶⼦结点存放了整⾏记录,普通索引的叶⼦结点存放了主键ID,查询的时候需要做⼀次回表查询)⼀定要回表查询么?(不⼀定,当查询的字段刚好是索引的字段或者索引的⼀部分,就可以不⽤回表,这也是索引覆盖的原理)
  • 你们系统⽬前的瓶颈在哪⾥?
  • 你打算怎么优化?简要说下你的优化思路
  • 有什么想问我么?

蚂蚁四面

  • 介绍下⾃⼰
  • 为什么要做逆向?
  • 怎么理解微服务?
  • 服务治理怎么实现的?(说了限流、压测、监控等模块的实现)
  • 这个不是中间件做的事么,为什么你们部⻔做?(当时没有单独的中间件团队,微服务刚搞不久,需要进⾏监控和性能优化)
  • 说说Spring的⽣命周期吧
  • 说说GC的过程(说了young gc和full gc的触发条件和回收过程以及对象创建的过程)
  • CMS GC有什么问题?(并发清除算法,浮动垃圾,短暂停顿)
  • 怎么避免产⽣浮动垃圾?(记得有个VM参数设置可以让扫描新⽣代之前进⾏⼀次young gc,但是因为gc是虚拟机⾃动调度的,所以不保证⼀定执⾏。但是还有参数可以让虚拟机强制执⾏⼀次young gc)
  • 强制young gc会有什么问题?(STW停顿时间变⻓)
  • 知道G1么?(了解⼀点 )
  • 回收过程是怎么样的?(young gc、并发阶段、混合阶段、full gc,说了Remember Set)
  • 你提到的Remember Set底层是怎么实现的?
  • 有什么想问的么?

⼩结

蚂蚁⾯试⽐较重视基础,所以Java那些基本功⼀定要扎实。蚂蚁的⼯作环境还是挺赞的,因为我⾯的是稳定性保障部⻔,还有许多单独的⼩组,什么三年1班,很有⻘春的感觉。⾯试官基本⽔平都⽐较⾼,基本都P7以上,除了基础还问了不少架构设计⽅⾯的问题,收获还是挺⼤的。

拼多多

  • ⾯试前
  • ⼀⾯
  • ⼆⾯
  • 三⾯
  • ⼩结

凭借这些Java知识文档我收获了蚂蚁、拼多多、字节跳动Offer

⾯试前

⾯完蚂蚁后,早就听闻拼多多这个独⻆兽,决定也去⾯⼀把。⾸先我在脉脉找了⼀个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多⾯试之旅。这⾥要⾮常感谢拼多多HR⼩姐姐,从⾯试内推到offer确认⼀直都在帮我,⼈真的很nice。

拼多多一面:

  • Java中的HashMap、TreeMap解释下?(TreeMap红⿊树,有序,HashMap⽆序,数组+链表)
  • TreeMap查询写⼊的时间复杂度多少?(O(logN))
  • HashMap多线程有什么问题?(线程安全,死锁)怎么解决?( jdk1.8⽤了synchronize + CAS,扩容的时候通过CAS检查是否有修改,是则重试)重试会有什么问题么?(CAS(Compare And Swap)是⽐᫾和交换,不会导致线程阻塞,但是因为重试是通过⾃旋实现的,所以仍然会占⽤CPU时间,还有ABA的问题)怎么解决?(超时,限定⾃旋的次数,ABA可以通过原理变量AtomicStampedReference解决,原理利⽤版本号进⾏⽐᫾)超过重试次数如果仍然失败怎么办?(synchronize互斥锁)
  • CAS和synchronize有什么区别?都⽤synchronize不⾏么?(CAS是乐观锁,不需要阻塞,硬件级别实现的原⼦性;synchronize会阻塞,JVM级别实现的原⼦性。使⽤场景不同,线程冲突严重时CAS会造成CPU压⼒过⼤,导致吞吐量下降,synchronize的原理是先⾃旋然后阻塞,线程冲突严重仍然有向滔的吞吐量,因为线程都被阻塞了,不会占有CPU )
  • 如果要保证线程安全怎么办?(ConcurrentHashMap)
  • ConcurrentHashMap怎么实现线程安全的?(分段锁)
  • get需要加锁么,为什么?(不⽤,volatile关键字)
  • volatile的作⽤是什么?(保证内存可⻅性)
  • 底层怎么实现的?(说了主内存和⼯作内存,读写内存屏障,happen-before,并在纸上画了线程交互图)
  • 在多核CPU下,可⻅性怎么保证?(思考了⼀会,总线嗅探技术)
  • 聊想聊,系统之间是怎么交互的?
  • 系统并发多少,怎么优化?
  • 给我⼀张纸,画了⼀个九⽅格,都填了数字,给⼀个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低(内⼼OS:之前貌似碰到过这题,最优解是怎么实现来着)思考中。。。
  • 可以先说下你的思路(想起来了,说了什么时候要变换⽅向的条件,向右、向下、向左、向上,依此循环)
  • 有什么想问我的?

拼多多二面:

  • ⾃我介绍下
  • ⼿上还有其他offer么?(拿了蚂蚁的offer)
  • 部⻔组织结构是怎样的?(这轮不是技术⾯么,不过还是⽼⽼实实说了)
  • 系统有哪些模块,每个模块⽤了哪些技术,数据怎么流转的?(⾯试官有点秃顶,⼀看级别就很⾼)给了我⼀张纸,我在上⾯简单画了下系统之间的流转情况
  • 链路追踪的信息是怎么传递的?(RpcContext的attachment,说了Span的结构:parentSpanId +curSpanId)
  • SpanId怎么保证唯⼀性?(UUID,说了下内部的定制改动)
  • RpcContext是在什么维度传递的?(线程)
  • Dubbo的远程调⽤怎么实现的?(讲了读取配置、拼装url、创建Invoker、服务导出、服务注册以
  • 及消费者通过动态代理、filter、获取Invoker列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝⼝⽔么
  • Spring的单例是怎么实现的?(单例注册表)
  • 为什么要单独实现⼀个服务治理框架?(说了下内部刚搞微服务不久,主要对服务进⾏⼀些监控和性能优化)
  • 谁主导的?内部还在使⽤么?
  • 你向有想过怎么做成通航么?
  • 有什么想问的么?

拼多多三面:

⼆⾯⽼⼤⾯完后就直接HR⾯了,主要问了些职业发展、是否有其他offer、以及⼊职意向等问题,顺便说了下公司的福利待遇等,都⽐较常规啦。不过要说的是⼿上有其他offer或者⼤⼚经历会有⼀定加分

拼多多的⾯试流程就简单许多,毕竟是⼀个成⽴四年多的公司。⾯试难度中规中矩,只要基础扎实应该不是问题。但不得不说⼯作强度很⼤,开始⾯试前HR就提前和我确认能否接受这样强度的⼯作,想来的⽼铁还是要做好准备

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

资料领取方式:蓝色传送门

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南
68)]

常见面试算法题汇总专题

[外链图片转存中…(img-tbBLpD4f-1625134919868)]

计算机网络基础专题

[外链图片转存中…(img-YpGYsgOZ-1625134919869)]

设计模式专题

[外链图片转存中…(img-Wo5uwlzU-1625134919870)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

荣耀鸿蒙价格,荣耀40S秀肌肉,120Hz+双5000万+鸿蒙系统,售价很感人

原标题:荣耀40S秀肌肉,120Hz双5000万鸿蒙系统,售价很感人虽然现在有不少的手机厂商开始发展子品牌,比如vivo发展的iQOO以及OPPO发展的真我,都是在市场上开始冒头。不过知名度最高的还是荣耀这个子品牌,自从…

作为Java开发程序员,中科创达java应届生薪资

01 并发宝典:面试专题 面试专题分为四个部分,分别如下 Synchronized 相关问题 可重入锁 ReentrantLock 及其他显式锁相关问题 Java 线程池相关问题 Java 内存模型相关问题 1.1 Synchronized 相关问题(这里整理了八问) 问题一…

Java面试必备的集合源码详解,砥砺前行!

一面(一个小时左右) 算法:写冒泡排序,问如何优化,简单讲了快排和堆排序的原理数据库:解释左连接数据库第一第二第三范式,数据库死锁linux:怎么查看内存;怎么查看进程&am…

java面试核心知识点,详解系列文章

技术能力 通常,「技术能力」这个部分将紧接着你的个人简介之后,放在简历的核心版面。这样设计是有道理的,因为它能够帮助雇主更快的判断你的技能是否与需求相吻合。 因此在制作这一部分内容时,你应该考虑以下两点: …

html5跨平台桌面打包,Html5到跨平台app应用

Html5到跨平台app应用每一项新兴技术的出现和流行,都是为了规模化的去统一解决一系列复杂问题,APICloud选择混合开发方向,目的是希望借助HTML5降低app开发复杂度,提高app开发效率。通过工程化的实践手段,我们首先设计了…

Java面试知识点总结宝典助你通关!成功入职字节跳动

01 阿里中间件(四面,Java岗) 1.1 Java中间件一面 技术一面考察范围 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现 线程池的底层实现以及常见的参数 数据结构基本都问了一遍:链表、队列等 Java内存…

html第二章课后选择题答案,HTML课后习题(带答案).doc

HTML课后习题选择题1. 下列标签中,用于设置字体大小、颜色的标签是(D)A. bB. subC. supD. font关于下列代码片段,说法错误的是(A)A. 用于在HTML文档中插入图像链接B. 图像以100100的大小显示C. 标签用于在页面中显示一张图像D. 图像的对齐方式为左对齐3.…

Java面试题及答案,java入门书籍

天下码农,多为CV!你是否每天还在增删改查?性能优化让你手足无措?看这里!技术大牛带你分分钟完爆性能优化!!! Java性能权威指南淘宝千万并发性能优化实战!理论结合实战&am…

隐藏导航条HTML,jQuery实现的导航条切换可显示隐藏

用jQuery实现一些导航条切换,显示隐藏,主要运用的技术有slideToggle( ),toggeClass( ),toggle( ):代码如下:导航条在项目中的应用$(function(){$(".tit").find("span").click(function(){$(this).…

Java面试题库,java用tabula解析pdf表格

Java代码是怎么运行的? Java的基本类型 Java虚拟机是如何加载Java类的 JVM是如何执行方法调用的?(上) JVM是如何执行方法调用的?(下) JVM是如何处理异常的? JVM是如何实现反射的&…

Java面试题:kafka幂等性+事务

一面: hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?Linux的共享内存如何实现,大概说了一下。Linux 中的用户模式和内核模式是什么含意?在 Java 中 Lock 接口比 synchronized 块的优势是…

Java高级工程师必备知识!高级java工程师面试技术

为什么要分库分表? 首先回答一下为什么要分库分表,答案很简单:数据库出现性能瓶颈。用大白话来说就是数据库快扛不住了。 数据库出现性能瓶颈,对外表现有几个方面: 大量请求阻塞在高并发场景下,大量请求…

Java高级工程师必看系列,从基础到源码统统帮你搞定

1、Java基础 Java基础务必要有一个非常牢固的根基,尤其是对于JVM和并发编程的掌握情况**(属于进阶内容,但也是Java最为重要的基础内容)**,不论是面试还是工作,基础不好,写不出高质量、漂亮的代…

Java高级工程师必看系列,已拿到offer

1.为什么要使用分布式锁 使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。 1.1举一个很长的例子 系统 A 是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之…

计算机网络tcp三次握手,快速掌握_计算机网络_TCP_三次握手

虽然这个话题已经是老生常谈了,随手一搜资料一堆,但是让人快速掌握,我认为应该有几个概念先被明确指出,再放出那张大同小异的时序图。01关注的字段探讨三次握手问题前,不得不先了解TCP报文段中存在的这四个位置&#x…

Java高级工程师每日面试题精选,面试经历分享

MySQL为何不选择平衡二叉树 既然平衡二叉树解决了普通二叉树的问题,那么mysql为何不选择平衡二叉树作为索引呢? 索引需要存储什么 让我们想一想,如果我们要把索引存起来,那么应该存哪些信息呢,它应该存储三块信息:…

Java面试题目,java关键字final

1 进程 进程与程序 操作系统之中最为通用的概念就是「进程」。与此相关的面试题以及各种技术优化策略也层出不穷,足以够证明它对于理解操作系统中举足轻重的地位。事实上,通过「进程」,程序员可以更为直观的理解自己所开发的软件&#xff0…

工作组无法访问计算机用户,工作组计算机无法访问,详细教您工作组计算机无法访问怎么解决...

电脑用户反映称在局域网中,查看工作组计算机时说无法访问,没有权限使用网络资源。就是双击“查看工作组计算机”时,提示“Workgroup无法访问。” what the fuck !!怎么解决?(泄气)下面,小编给大…

Java面试题目,java工程师成神之路

2. ZooKeeper 介绍 2.1. ZooKeeper 由来 正式介绍 ZooKeeper 之前,我们先来看看 ZooKeeper 的由来,还挺有意思的。 下面这段内容摘自《从 Paxos 到 ZooKeeper 》第四章第一节,推荐大家阅读一下: ZooKeeper 最早起源于雅虎研究院…

Java面试题目,极客时间免费课程

一、对Kafka的认识 1.Kafka的基本概念 2.安装与配置 3.生产与消费 4.服务端参数配置 二、生产者 1.客户端开发 2.原理分析 3.重要的生产者参数 三、消费者 1.消费者与消费组 2.客户端开发 四、主题与分区 1.主题的管理 2.初识KafkaAdminCilent 3.分区的管理 4.如何…