BATJ面试经验分享+Java面试题附答案解析

2023-10-27 18:00

本文主要是介绍BATJ面试经验分享+Java面试题附答案解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BATJ面试经验分享+Java面试题附答案解析(十四)

持续更新Java相关资料。最近有工作了3年多的朋友跟我交流了一下他的面试经验,经他同意分享出来,希望能给到大家一些帮助,另外大家想看前几个合集的可以去我主页查找。

有些答案是我自己总结的,有些是在网上搜集整理的。看完这些面试不慌!大家如果有更多经验可以在评论分享,有错误也欢迎大家指出,不吝赐教,谢谢

百度,百度我去的那年是停止社招的,大部分部门都不社招只有校招,但也有少数部门有特批名额,于是就去试了一把,一面刚来就是写代码,
一个单链表的算法题目,写完,面试官很满意点点头,随后面试官发问在你的项目中spring是如何管理zookeeper的,答:balabala,
了解zookeeper的leader选取算法吗,讲一下他的流程,知道zab算法吗,讲一下他的流程,汗,问的问题都太变态,没想到会问的这么深,
zab算法太复杂了,zab是基于paxos的,而paxos可是获得图灵奖的算法,勉强说了一下,说的很心虚,有好多盲点自己也没搞清楚,
不过好在面试官也不往下问了,其实我估计他也不见得会(窃喜),随后让我稍等一下;一会儿过后二面面试官过来了,是个成熟的大叔,
二面只问了两个东西,一个jvm,一个并发编程,jvm主要是性能调优,jstack的使用,full GC和minor GC的分析等,并发编程问的很细,
发问多个线程达到同一个状态然后再一起执行,达到某一个状态之后再继续并发执行,这种怎么实现,答:jdk5之后有一个CyclicBarrir,
通过这个来实现,它可以重用等balabala说了一些,再发问读写锁中加读锁后如何避免写线程饿死,答:加策略balabala,发问如何实
现控制线程在某段时间内完成,不完成就撤销,答:实现Callable接口,返回FutureTask类或者Future接口,然后去触发撤销操作。
开始问项目,描述一下对账系统,balabala…数据量大吗,并发量高吗,数据库怎么设计的等,随后让我等一会,又过来一个面试官,
问我业务,你在第三方支付公司,能不能讲一下支付的技术流程,balabala…把自己理解的支付流程讲了一下,最后补了一句,
支付的细节业务很复杂,我也没完全明白呢,汗,让我等了一会,随后面试官说你回去等消息吧,我想完蛋了吧,难道因为业务不熟被刷,
真不甘心;心凉了一个星期,结果hr在星期一打电话说让星期四去最后一面,是技术总监的面试,星期四屁颠屁颠的去了
(话说百度大厦离国贸太远了,地铁每次要坐一个半小时,我也是跪了),四面开始,发问异步处理的幂等性,不是很难,
唯一性索引或者开发分布式锁呗,随后风格立马就转了,不问技术了,发问你觉得你来百度能给百度带来什么样的价值,
你希望你加入的百度的团队是一个什么样的团队,你如何和产品经理沟通,假如你和其他研发接口制定无法统一你该如何解决等,
一点准备都没有,回答的结结巴巴很是不好,哎,听天由命吧!

阿里


第五个面的是阿里,百度面完等消息,闲来无事查看公司招聘信息,看到阿里招聘薪资很诱人。
哈哈,我就是这样一个无节操的人,开始是电话面试,然后是面试,二面和三面,主要面试技术点有
JVM相关:
jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms
当出现了内存溢出,你怎么排错
JVM内存模型的相关知识了解多少
简单说说你了解的类加载器
JAVA的反射机制

网络:
http1.0和http1.1有什么区别
TCP三次握手和四次挥手的流程,为什么断开连接要4次,如果握手只有两次,会出现什么
TIME_WAIT和CLOSE_WAIT的区别
说说你知道的几种HTTP响应码

架构设计与分布式:
tomcat如何调优,各种参数的意义
常见的缓存策略有哪些,你们项目中用到了什么缓存系统,如何设计的,Redis的使用要注意什么,持久化方式,内存设置,集群,淘汰策略等
如何防止缓存雪崩
分布式集群下如何做到唯一序列号
设计一个秒杀系统,30分钟没付款就自动关闭交易
如何做一个分布式锁
用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
MQ系统的数据如何保证不丢失
分布式事务的原理,如何使用分布式事务
什么是一致性hash
说说你知道的几种HASH算法,简单的也可以
什么是paxos算法
redis和memcached 的内存管理的区别等等
后面给了我offer。但是最近996不知道如何选择。

Java面试题(十四)

MySql

142. 数据库的三范式是什么?

  • 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。

  • 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。

  • 第三范式:任何非主属性不依赖于其它非主属性。

143. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?

  • 表类型如果是 MyISAM ,那 id 就是 18。

  • 表类型如果是 InnoDB,那 id 就是 15。

 

InnoDB 表只会把自增主键的最大 id 记录在内存中,所以重启之后会导致最大 id 丢失。

144. 如何获取当前数据库版本?

使用 select version() 获取当前 MySQL 数据库版本。

145. 说一下 ACID 是什么?

  • Atomicity(原子性):一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。

  • Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。

  • Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  • Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

146. char 和 varchar 的区别是什么?

char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。

chat 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。

varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。

所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。

147. float 和 double 的区别是什么?

  • float 最多可以存储 8 位的十进制数,并在内存中占 4 字节。

  • double 最可可以存储 16 位的十进制数,并在内存中占 8 字节。

148. mysql 的内连接、左连接、右连接有什么区别?

内连接关键字:inner join;左连接:left join;右连接:right join。

 

内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。

最后

面试题内容到这里就结束了,后续会有更多更新内容,希望对大家有帮助。

最后还想对你们说几句心里话,工作这么多年,也帮别人面试过一些人。不管是站在面试官的角度看还是leader的视角,面试大厂除了面试技巧和经验,过硬的技术和好的项目经验也是自己的王牌和底气。一线大厂核心技术分享

 我花了比较长的时间整理了一些学习资料,上面发的就是资料中的冰山一角,希望能帮到大家!点击一起学习 暗号:csdn

                         

  后续会分享更多纯干货文章,希望能真正帮到你们。你们的支持就是我最大的动力!欢迎关注点赞啊!

                                                       

这篇关于BATJ面试经验分享+Java面试题附答案解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287399

相关文章

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

Spring Security6.3.x的使用指南与注意事项

《SpringSecurity6.3.x的使用指南与注意事项》SpringSecurity6.3.1基于现代化架构,提供简洁配置、增强默认安全性和OAuth2.1/OIDC支持,采用Lambda... 目录介绍基础配置 (Servlet 应用 - 使用 Lambda DSL)关键配置详解(Lambda DS

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的