首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
EmotionalDay
南京理工大学 C++
发布于江苏
关注
已关注
取消关注
mark
@小工妹:
字节跳动 Java后端开发 一面
1. 先做个自我介绍吧 参考答案: 您好,我是XXX,目前就读于XX大学计算机科学与技术专业,研究生二年级。我的研究方向是分布式系统和云计算,在校期间系统学习了数据结构、算法、操作系统、计算机网络等核心课程。 在技术栈方面,我熟悉Java后端开发,掌握Spring Boot、Spring Cloud、MyBatis等主流框架。熟悉MySQL、Redis、Kafka等中间件的使用。了解微服务架构、分布式系统的设计和实现。 项目经验方面,我做过一个分布式电商系统,实现了用户、商品、订单、支付等核心模块,使用了微服务架构,日均订单量达到10万+。还参与过实验室的云原生项目,负责容器编排和服务治理部分。在XX公司实习期间,参与了推荐系统的开发,主要负责特征工程和模型服务化。 我对后端开发和分布式系统很感兴趣,关注技术博客和开源项目,在GitHub上有一些个人项目。希望能加入字节跳动,在更大的平台上学习和成长。 2. 详细介绍一下你的电商项目,系统架构是怎样的? 答案: 这个电商系统是我的毕设项目,采用微服务架构设计。系统分为用户服务、商品服务、订单服务、支付服务、库存服务、搜索服务等多个独立服务。 架构设计上,使用Spring Cloud作为微服务框架。Nacos做服务注册与发现和配置中心,Gateway做API网关,Sentinel做流量控制和熔断降级。服务间通信使用Feign进行同步调用,使用Kafka进行异步通信。 数据存储方面,用户信息、商品信息、订单信息存储在MySQL中,使用ShardingSphere进行分库分表。商品详情、用户会话等热点数据缓存在Redis中。商品搜索使用Elasticsearch实现全文检索和复杂查询。 业务流程上,用户下单时,先调用库存服务检查库存,然后创建订单,发送消息到Kafka,库存服务和积分服务监听消息异步处理。支付成功后,更新订单状态,发送消息通知发货。整个流程使用分布式事务保证数据一致性,采用了Seata的AT模式。 性能优化方面,使用Redis缓存热点数据,使用本地缓存+Redis二级缓存提高命中率。使用消息队列削峰填谷,异步处理非核心业务。使用数据库读写分离和分库分表提高并发能力。通过这些优化,系统QPS达到5000+,响应时间控制在100ms以内。 3. MySQL索引的原理是什么?什么情况下需要建立索引? 答案: MySQL的索引使用B+树数据结构实现。B+树是一种多路平衡查找树,所有数据都存储在叶子节点,非叶子节点只存储键值用于索引。叶子节点之间通过指针连接,支持范围查询。B+树的高度通常是3-4层,可以大幅减少磁盘IO次数。 InnoDB引擎使用聚簇索引,主键索引的叶子节点存储完整的行数据。辅助索引的叶子节点存储主键值,查询时需要回表查询完整数据。MyISAM引擎使用非聚簇索引,索引和数据分开存储。 需要建立索引的情况包括:WHERE子句中经常查询的字段,比如用户ID、订单号等。JOIN连接的字段,提高连接效率。ORDER BY和GROUP BY的字段,避免文件排序。区分度高的字段,比如手机号、邮箱等,区分度低的字段如性别不适合建索引。 不适合建索引的情况包括:表数据量很小,全表扫描更快。字段更新频繁,维护索引的开销大。字段区分度低,索引效果不明显。字段很长,索引占用空间大。 索引优化建议:使用覆盖索引,避免回表查询。使用前缀索引,减少索引空间。定期分析索引使用情况,删除无用索引。避免在索引列上使用函数或表达式,会导致索引失效。 4. 联合索引(a,b,c)在什么情况下会使用?a>10 and b=1会使用索引吗? 答案: 联合索引遵循最左前缀原则,只有查询条件从索引的最左列开始,并且连续,才能使用索引。 对于联合索引(a,b,c),以下情况会使用索引:a=1、a=1 and b=2、a=1 and b=2 and c=3、a=1 and c=3(只使用a列索引)。不会使用索引的情况:b=1、c=1、b=1 and c=1。 对于a>10 and b=1这个查询,会使用索引,但只能使用a列的索引。因为a是范围查询,MySQL会使用a列的索引定位到a>10的记录,但不会继续使用b列的索引。这是因为a>10的结果集中,b的值是无序的,无法利用索引。 对于单独的a>10,会使用索引的a列,这是最基本的索引使用场景。 如果想让a>10 and b=1充分利用索引,可以调整查询条件的顺序为b=1 and a>10,或者建立(b,a,c)的索引。但这需要根据实际的查询场景来决定,因为索引的顺序会影响其他查询的性能。 在实际应用中,可以使用EXPLAIN分析SQL的执行计划,查看key字段确认使用了哪个索引,key_len字段确认使用了索引的哪些列,rows字段确认扫描了多少行。通过这些信息可以判断索引是否生效,以及是否需要优化。 5. Java中synchronized和ReentrantLock有什么区别? 答案: synchronized和ReentrantLock都是Java中实现线程同步的机制,但有一些重要区别。 实现层面,synchronized是Java关键字,由JVM实现,是内置的锁机制。ReentrantLock是JDK提供的类,在java.util.concurrent.locks包中,是API层面的锁。 使用方式上,synchronized使用简单,自动加锁和释放锁,不需要手动操作。ReentrantLock需要手动加锁和释放锁,必须在finally块中释放,否则可能导致死锁。 功能特性上,ReentrantLock更强大。支持公平锁和非公平锁,synchronized只支持非公平锁。支持可中断的锁获取,线程在等待锁时可以被中断。支持超时获取锁,tryLock可以设置超时时间。支持多个条件变量,可以实现更复杂的线程通信。 性能方面,在JDK 1.6之前,synchronized性能较差。JDK 1.6之后,对synchronized进行了大量优化,引入了偏向锁、轻量级锁、自旋锁等机制,性能已经和ReentrantLock相当。在低竞争场景下,synchronized可能更快,因为JVM可以进行锁消除和锁粗化优化。 选择建议:如果功能够用,优先使用synchronized,代码简洁,不容易出错。如果需要高级特性(公平锁、可中断、超时、多条件),使用ReentrantLock。在高并发场景下,可以通过性能测试选择更合适的方案。 6. 如何保证代码的健壮性和可维护性? 答案: 保证代码健壮性和可维护性需要从多个方面入手。 代码规范方面,遵循统一的编码规范,比如阿里巴巴Java开发手册。使用有意义的变量名和函数名,代码即文档。保持函数简短,单一职责,一个函数只做一件事。避免过深的嵌套,使用卫语句提前返回。添加必要的注释,解释复杂的业务逻辑和算法。 异常处理方面,对可能出现异常的地方进行捕获和处理,不要吞掉异常。使用自定义异常类,区分不同类型的异常。在关键位置记录日志,方便问题排查。对外部调用(数据库、第三方接口)增加超时和重试机制。 参数校验方面,对输入参数进行严格校验,使用JSR-303注解或手动校验。对边界条件进行处理,比如空值、空集合、数组越界等。使用断言检查不应该发生的情况,及早发现问题。 测试方面,编写单元测试,覆盖核心业务逻辑和边界情况。使用Mock框架隔离外部依赖,提高测试效率。进行集成测试,验证模块间的协作。使用压力测试验证系统的性能和稳定性。 设计模式方面,合理使用设计模式,提高代码的可扩展性和可维护性。使用工厂模式创建对象,使用策略模式封装算法,使用模板方法模式复用代码。遵循SOLID原则,单一职责、开闭原则、里氏替换、接口隔离、依赖倒置。 文档方面,编写清晰的README文档,说明项目的功能、架构、部署方式。编写API文档,使用
点赞 23
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-27 17:13
西安工业大学 golang
网易游戏互娱 试卷:27届实习生项目-笔试题3.24
一道模拟,一道BFS(应该是吧,感觉自己不太能写,就输出-1,拿了16分)第一道妖伞,持伞人 AC了,第二道 蛋仔派对移动问题“骗”了16分,哦对了,为啥网易给我发了两个笔试,球球各位牛友解答
a方寸星河:
第二题在加上当起点和终点位于同一列或同一行时,输出1,能骗44
笔试
点赞
评论
收藏
分享
03-27 15:01
已编辑
门头沟学院 Java
客户端劝退
本帖是劝大家不要选择客户端的。原因如下:1.做客户端开发之后,你会发现市场需求很小,招人的公司就那些。除非你是那种技术大神,能够百分百进入大厂,以及成为架构那种,那么选择也是可以的。不过既然你都能做的这种程度了,为什么不选择更宽的路子呢?把路走宽,不要把路走窄。2.社招难,客户端开发技术很杂,Android 是 Java 和 Kotlin,iOS 是 OC 和 Swift,以及跨端技术 Flutter、RN 以及 KMP 等等。现在的大环境,公司选择只会选择有对口经验的,如果你没有对口经验,大概率人家是不会要的。写 Swift和 SwiftUI 的不要写 OC 的,写跨端技术栈的不要写纯原生的...
点赞
评论
收藏
分享
02-25 13:02
中南大学 C++
简历求拷打
佬们看看这个简历可以冲大厂吗
竹秋拾:
我建议985加大加粗
点赞
评论
收藏
分享
03-10 18:34
湖南交通工程学院 Java
像我这种基本上就是炮灰了吧
春招实习都投了好多,全是拒绝,有一两个面试,面完也觉得希望渺茫,果真应证了那句26届学院本,buff拉满了
风儿吹啊吹:
牛客全是不合适,不在这投
今天你投了哪些公司?
点赞
评论
收藏
分享
03-27 00:42
蚌埠坦克学院 C++
社招 硕1.5 wxg 面委凉经
岗位:客户端开发timeline3.4 简历给到猎头3.9 一面 3.11 二面3.13 面委笔试3.18 三场面委面,早中晚各一场前两场面委面聊的很好,被最后一个面委面试官一票否决一面1.深入讲讲工作项目中遇到的挑战和解决办法2.性能优化问题的解决思路3.在做方案设计的时候怎么做好可维护性,比如从设计模式出发4.常规八股 线程和协程的区别,协程的底层实现原理 TCP的流量控制和拥塞避免5.一道算法题 能被三整除的最大和二面1.分享一下在工作中遇到的难题2.深挖工作项目中的技术原理3.mac上对客户端进程的权限管理,内核事件的安全性如何保证4.两道算法题: 把中文数字转换为int; 给定字符串...
查看16道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都在找Agent开发,我整理了80道相关的Agent开发面试题。
3.2W
2
...
被笔试耽误了一天day16(为什么携程第三题始终是0呢
1.0W
3
...
学院本春招逆袭年包25w
7278
4
...
AI时代,技术er的三大“职业单选题”
4983
5
...
腾讯后端复试面经
4573
6
...
27后端暑期实习-字节-中国广告与交易(已OC
4199
7
...
个人总结前端Agent面试全攻略!
3747
8
...
AI应用开发求职心得分享,怎么走才可以轻松上岸?
3435
9
...
3.26 淘天暑期一面(已挂) 80MIN
3372
10
...
快手后端-Java开发二面面经
2991
创作者周榜
更多
正在热议
更多
#
你的实习产出是真实的还是包装的?
#
23042次浏览
371人参与
#
参加完秋招的机械人,还参加春招吗?
#
119683次浏览
754人参与
#
米连集团26产品管培生项目
#
14025次浏览
288人参与
#
找AI工作可以去哪些公司?
#
13977次浏览
574人参与
#
说说你知道的学历厂
#
390804次浏览
1379人参与
#
从事AI岗需要掌握哪些技术栈?
#
12586次浏览
658人参与
#
开放七大实习专项,百度暑期实习值得冲吗
#
17323次浏览
265人参与
#
你做过最难的笔试是哪家公司
#
42802次浏览
578人参与
#
金三银四,你的春招进行到哪个阶段了?
#
23666次浏览
295人参与
#
想给25届机械人的秋招建议
#
47621次浏览
251人参与
#
AI面会问哪些问题?
#
33066次浏览
893人参与
#
中国电信笔试
#
32881次浏览
303人参与
#
我心目中的理想工作是这样的
#
100783次浏览
907人参与
#
携程笔试
#
139108次浏览
837人参与
#
这些公司卡简历很严格
#
94847次浏览
413人参与
#
通信硬件知识分享
#
48026次浏览
537人参与
#
拼多多集团-PDD笔试
#
36534次浏览
343人参与
#
一人说一个提前实习的好处
#
118305次浏览
711人参与
#
投递几十家公司,到现在0offer,大家都一样吗
#
342323次浏览
2186人参与
#
哪些公司真双非友好?
#
70354次浏览
291人参与
#
快手求职进展汇总
#
748597次浏览
7124人参与
#
国企/银行/研究所公司爆料
#
201540次浏览
909人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务