BAT互联网IT高频面试题(含详细实战答案)_第1页
BAT互联网IT高频面试题(含详细实战答案)_第2页
BAT互联网IT高频面试题(含详细实战答案)_第3页
BAT互联网IT高频面试题(含详细实战答案)_第4页
BAT互联网IT高频面试题(含详细实战答案)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BAT互联网IT高频面试题(含详细实战答案)本套面试题适配BAT一线互联网校招、社招后端开发岗位,涵盖基础核心、网络、操作系统、数据库、中间件、并发编程、实战场景七大模块,答案贴合真实面试话术,通俗易懂、落地性强,无书面化空话。一、Java基础核心面试题1.讲讲==和equals的区别答案:==是运算符,既可以比较基本数据类型,也可以比较引用数据类型。基本类型比较的是数值本身,引用类型比较的是对象的内存地址。equals是Object类的方法,默认情况下和==效果一致,比较对象地址。但像String、Integer这类常用类都重写了equals方法,重写后不再比较地址,而是比较对象的实际内容、数值是否相等。日常开发中,比较字符串、包装类数值是否一致,统一用equals;判断对象是否为同一个对象,用==。2.String、StringBuilder、StringBuffer的区别答案:String是不可变字符串,底层是final修饰的字符数组,每次拼接、修改字符串都会生成新对象,频繁操作会产生大量垃圾对象,效率最低。StringBuffer和StringBuilder是可变字符串,底层数组可动态扩容,修改不会新建对象。其中StringBuffer所有方法都加了同步锁,线程安全但性能稍差;StringBuilder无锁,线程不安全,性能最优。业务场景选择:少量字符串操作用String;单线程频繁拼接用StringBuilder;多线程并发拼接用StringBuffer。3.重载和重写的区别答案:重载发生在同一个类中,是方法名相同,参数列表的个数、类型、顺序不同,和返回值、修饰符无关,属于编译期多态。主要作用是提升方法复用性。重写发生在父子类之间,子类重写父类的非私有、非final、非静态方法,要求方法名、参数列表、返回值完全一致,权限修饰符范围大于等于父类,属于运行期多态。主要作用是子类个性化实现父类方法。4.接口和抽象类的区别答案:抽象类是半抽象模板,可以有构造方法、普通成员变量、普通方法和抽象方法,单继承,主要用于抽取子类通用属性和行为。接口是纯粹的行为规范,JDK8之前只能有常量和抽象方法,JDK8支持默认方法、静态方法,JDK9支持私有方法,无构造方法,多实现,主要用于定义功能规范、解耦。实际开发中:通用属性和通用代码用抽象类,定义功能标准、拓展功能用接口。二、Java并发编程面试题1.synchronized和Lock的区别答案:synchronized是内置关键字,底层依赖JVM实现,无需手动加锁解锁,使用简单。属于可重入、悲观锁,默认是非公平锁,无法中断等待线程,适合低并发场景。Lock是JDK提供的接口(常用ReentrantLock),底层代码层面实现,需要手动lock()加锁、unlock()解锁。支持可重入、可中断、可公平/非公平锁,还能绑定多个条件变量,灵活性更强,高并发场景性能优于synchronized。日常简单同步场景用synchronized,高并发、需要精细控制锁的场景用ReentrantLock。2.线程的生命周期有哪些状态答案:Java线程一共5种核心状态:1.新建:创建线程对象,未调用start();2.就绪:调用start(),等待CPU调度;3.运行:CPU分配时间片,线程执行代码;4.阻塞:线程暂停执行,分为等待阻塞、同步阻塞、超时阻塞;5.终止:线程代码执行完毕或异常退出,生命周期结束。3.什么是线程池?核心参数有哪些答案:线程池是统一管理线程的容器,避免频繁创建、销毁线程带来的性能损耗,统一调度任务、控制并发数量,是项目高并发必备组件。核心参数7个:核心线程数、最大线程数、空闲线程存活时间、时间单位、任务队列、线程工厂、拒绝策略。核心执行逻辑:任务进来优先核心线程,核心线程满了进队列,队列满了创建非核心线程,线程数达到最大值触发拒绝策略。三、计算机网络面试题1.HTTP和HTTPS的区别答案:HTTP是超文本传输协议,端口80,明文传输、无加密、无身份验证,数据容易被窃听、篡改、伪造,安全性差,但是传输速度快。HTTPS是HTTP+SSL/TLS加密协议,端口443,传输数据加密,同时会校验证书合法性,防止数据篡改和中间人攻击,安全性极高。缺点是需要握手、加密解密,速度稍慢,且需要配置SSL证书。2.TCP和UDP的区别,各自应用场景答案:TCP是面向连接的可靠传输协议,传输前三次握手建立连接,传输后四次挥手断开连接,支持确认应答、重传机制、拥塞控制,数据不丢失、不乱序。缺点是开销大、速度慢。适用文件传输、网页访问、支付接口等对可靠性要求极高的场景。UDP是无连接的不可靠协议,无需建立连接,直接发包,无校验、无重传,开销小、速度快、延迟低。适用直播、语音通话、游戏实时传输等允许少量丢包、追求高实时性的场景。3.TCP三次握手、四次挥手原理答案:三次握手(建立连接):第一次:客户端向服务端发送连接请求;第二次:服务端收到请求,回复确认并发起连接请求;第三次:客户端收到确认,再次回复确认,连接建立。核心目的是双向确认收发能力正常。四次挥手(断开连接):第一次:主动方发送断开请求;第二次:被动方确认断开请求,停止接收数据,仍可发送剩余数据;第三次:被动方数据发送完毕,发送断开请求;第四次:主动方确认,连接彻底断开。因为TCP连接是全双工,收发通道独立,所以需要四次。四、操作系统面试题1.进程和线程的区别答案:进程是操作系统资源分配的最小单位,独立占有内存、CPU资源,进程之间完全隔离,开销大,切换速度慢。线程是CPU调度的最小单位,隶属于进程,共享进程的内存、资源,线程之间切换开销极小、速度快。一个进程至少包含一个线程,进程崩溃不影响其他进程,一个线程崩溃会导致整个进程崩溃。2.什么是死锁?产生死锁的四个必要条件答案:死锁是多个线程互相持有对方需要的锁,同时等待对方释放锁,所有线程永久阻塞,程序卡死。四个必要条件:互斥条件、请求与保持条件、不可剥夺条件、循环等待条件。解决思路:破坏任意一个条件即可,最常用的是统一锁的获取顺序,破坏循环等待条件。五、MySQL数据库面试题1.InnoDB和MyISAM的区别答案:InnoDB支持事务、行锁、外键、崩溃恢复,事务ACID特性完整,并发性能好,增删改查均衡,是MySQL默认存储引擎。缺点是占用空间稍大。MyISAM不支持事务、行锁、外键,只有表锁,并发能力差,崩溃无法恢复数据。优势是查询速度极快、占用空间小,只适用于静态数据、纯查询的低并发场景,现在项目基本不用。2.索引失效的常见场景答案:1.索引列使用like%xxx模糊查询,前置通配符失效;2.索引列参与运算、函数调用、类型转换;3.违背最左匹配原则,联合索引跳过前置列;4.使用or连接非索引字段;5.数据量过大,MySQL判断全表扫描比索引更快,自动放弃索引。3.MySQL事务四大特性、隔离级别答案:四大特性ACID:原子性、一致性、隔离性、持久性。原子性是事务要么全成功要么全失败;一致性是数据前后状态合法;隔离性是事务之间互不干扰;持久性是事务提交后数据永久落地。四大隔离级别(从低到高):读未提交:存在脏读、不可重复读、幻读;读已提交:解决脏读,存在不可重复读、幻读;可重复读(MySQL默认):解决脏读、不可重复读,存在幻读;串行化:全部问题解决,完全串行执行,性能最低。六、Redis中间件面试题1.Redis为什么快答案:1.纯内存操作,无需读写磁盘,速度远超数据库;2.单线程模型,无线程切换、锁竞争开销;3.IO多路复用,单线程处理大量客户端连接;4.数据结构设计精简,操作效率极高。2.Redis过期键删除策略答案:一共三种策略配合使用:1.惰性删除:访问key时才判断是否过期,过期则删除,节省CPU资源;2.定期删除:后台线程定时随机抽查过期key,批量删除,避免内存积压;3.内存淘汰:内存满时触发淘汰策略,清理过期或闲置key。3.Redis缓存穿透、击穿、雪崩解决方案答案:缓存穿透(查不存在数据):布隆过滤器过滤无效key、空值缓存、接口限流校验;缓存击穿(热点key过期):热点key永不过期、互斥锁、二级缓存;缓存雪崩(大量key同时过期/缓存宕机):过期时间随机打散、集群高可用、降级限流、数据预热。七、实战场景面试题(BAT高频)1.如何解决接口高并发、高QPS问题答案:整体思路:分层限流、读写分离、多级缓存、异步解耦、集群扩容。1.前端:页面缓存、接口防抖、限流;2.网关层:统一限流、熔断、黑名单拦截;3.服务层:线程池控制并发、本地缓存+Redis分布式缓存、接口降级;4.数据层:MySQL读写分离、分库分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论