Day217,2024字节跳动Java面试真题解析

  • 组成的框架由:

  • eureka服务注册,nacos

  • OpenFeign服务调用

  • Hystrix熔断器

  • Gateway网关

  • Config配置中心,nacos

  • Bus消息总线,nacos

  • 项目中,使用阿里巴巴nacos,代替springcloud一些组件

  • Nacos

  • 注册中心

  • 配置中心

  • Feign

  • 服务调用,一个微服务调用另外一个微服务,实现远程调用

  • 熔断器

  • Gateway网关,之前是zuul

  • 版本

  • image-20210311182529496

4、MyBatisPlus

  • MyBatisPlus就是对MyBatis的增强,本身并没改变

  • 自动填充

  • 乐观锁

  • 逻辑删除

  • 代码生成器

5、EasyExcel

  • 阿里巴巴提供操作Excel工具,效率高,代码简洁

*为什么他效率高,代码简洁?

因为他封装了poi进行封装,采用SAX方法(一行一行操作)进行解析

Dom:一次将所有数据放进内存中来

  • 项目应用在添加课程分类,读取excel数据

三、项目使用【后端】技术【2】


1、SpringSecurity

  • 项目整合框架实现权限管理功能

  • 框架组成:

  • 认证(登录)

  • 授权(对用户授予权限)

  • 登录认证过程

*说一说SpringSecurity的登录认证过程?

image-20210311192138289

  • 代码执行过程

image-20210311192211455


2、Redis

  • 首页数据通过Redis做缓存

  • Redis数据类型:

  • Set

  • List

  • Hash

  • String

  • zset

*Redis做缓存,什么样的数据适合使用Redis做缓存?

经常访问,但不经常修改的数据;如主页


3、Nginx

  • 方向代理服务器

  • 请求转发、负载均衡、动静分离


4、OAuth2+JWT

  • 针对特定问题的解决方案

  • Jwt制定一种规则生成字符串,包括:三部分

  • JWT头

  • 有效载荷(用户信息)

  • 防伪标志


5、HttpClient

  • 模拟浏览器,请发请求响应的工具

  • 项目中应用场景:微信登录获取扫描人信息,微信支付查询支付状态


6、Cookie

  • 特点:

  • 客户端技术,存储在浏览器、客户端中

  • 每次发送请求,都会带着cookie

  • cookie有默认有效时长,默认关闭浏览器就不存在了,也可以设置时长,会话级别


7、微信登录

上面有讲了

8、微信支付

上面有讲了


9、阿里云OSS

  • 文件存储

  • 添加讲师,上次讲师头像


10、阿里云视频点播

  • 视频上传、视频删除、视频播放

  • 整合阿里云视频播放器播放

  • 使用视频播放凭证播放


11、阿里云短信服务

  • 注册时,发送手机验证码,存储到redis中校验

12、Git

  • 代码提交到远程的Git仓库中

13、Docker+Jenkins

  • 手动打包

  • idea工具打包

  • 自动化部署过程


项目遇到的问题

=================================================================

1、前端问题—路由切换问题


  • 多次路由跳转到同一个页面,created()只执行一次

  • 解决方案:通过vue监听机制解决

image-20210311194336555

2、前端问题—ES6模块化运行问题


  • 使用Babel把ES6代码转换为ES5的代码运行

3、MyBatisPlus生成19位id值问题


  • mp生成的ip值为19位,js处理数据类型值时,只处理16位

  • 解决方案:将Long改为String类型

4、跨域问题


  • 访问协议+ip地址+端口号,三者有任何一个不一样,就会产生跨域问题

  • 解决方案:

  • 在controller添加注解@CrossOrigin

  • 通过Gateway网关解决,写一个配置类

  • 上面只能使用一个,不然会失效

5、413问题


  • 上传视频时,nginx有上传视频大小限制,如果超过,就会出现413错误

  • 413描述:请求体过大

  • 解决方案:在Nginx里配置客户端提交文件大小

  • 响应状态码:413、跨域403、重定向302

6、Maven加载问题


  • Maven加载项目时,不会加载src-java文件夹里面的xml类型文件

  • 解决方案:

  • 1、复制xml文件到target目录

  • 2、在maven中配置,与properties配置文件中指定xml文件夹


项目面试总结

================================================================

1、项目描述


image-20210311195929594

image-20210311200518805

image-20210311200459245

2、这是一个项目还是一个产品


是一个产品;项目是从0开始搭建的

3、测试要求


首页和视频详情页qps单机qps要求 2000+

经常用每秒查询率来衡量域名系统服务器的机器的性能,其即为QPS

QPS = 并发量 / 平均响应时间

4、企业中的项目(产品)开发流程


image-20210311202008190

5、系统中都有那些角色?数据库是怎么设计的?


前台:会员(学员)

后台:系统管理员、运营人员

后台分库,每个微服务一个独立的数据库,使用了分布式id生成器

6、视频点播是怎么实现的(流媒体你们是怎么实现的)


我们直接接入了阿里云的云视频点播。云平台上的功能包括视频上传、转码、加密、智能审核、监控统计等。

还包括视频播放功能,阿里云还提供了一个视频播放器。

7、前后端联调经常遇到的问题:


1、请求方式post、get

2、json、x-wwww-form-urlencoded混乱的错误

3、后台必要的参数,前端省略了

4、数据类型不匹配

5、空指针异常

6、分布式系统中分布式id生成器生成的id 长度过大(19个字符长度的整数),js无法解析(js智能解析16个长度:2的53次幂)id策略改成 ID_WORKER_STR

8、前后端分离项目中的跨域问题是如何解决的


后端服务器配置:我们的项目中是通过Spring注解解决跨域的 @CrossOrigin

也可以使用nginx反向代理、httpClient、网关

9、说说你做了哪个部分、遇到了什么问题、怎么解决的


问题1:

分布式id生成器在前端无法处理,总是在后三位进行四舍五入。

分布式id生成器生成的id是19个字符的长度,前端javascript脚本对整数的处理能力只有2的53次方,也就是最多只能处理16个字符解决的方案是把id在程序中设置成了字符串的性质

问题2:

项目迁移到Spring-Cloud的时候,经过网关时,前端传递的cookie后端一只获取不了,看了cloud中zuul的源码,发现向下游传递数据的时候,zull默认过滤了敏感信息,将cookie过滤掉了解决的方案是在配置文件中将请求头的过滤清除掉,使cookie可以向下游传递

问题3…

10、分布式系统的id生成策略


https://www.cnblogs.com/haoxinyue/p/5208136.html

11、项目组有多少人,人员如何组成?


不要太教条,说说人一任职务

12、分布式系统的CAP原理


CAP定理:

指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点在同一时间的数据完全一致,越多节点,数据同步越耗时)

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

总结

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了

image

1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

image

2、Redis学习笔记及学习思维脑图

image

3、数据面试必备20题+数据库性能优化的21个最佳实践

image

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-uy3G2EgQ-1711387995577)]

总结

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了

[外链图片转存中…(img-ddNFPdtw-1711387995577)]

1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

[外链图片转存中…(img-UzSxbDT4-1711387995578)]

2、Redis学习笔记及学习思维脑图

[外链图片转存中…(img-eW7Xdo2h-1711387995578)]

3、数据面试必备20题+数据库性能优化的21个最佳实践

[外链图片转存中…(img-d6NmVXNh-1711387995578)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值