首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 09:03
黑龙江大学 Java
深圳程序员职业生涯
2016年大学本科毕业之后没有从事自己想要的工作选择。上海的工作并没有得到认可。年轻人是时代的弄潮儿。时尚和美观操控着每个应届毕业生的不服输心态。测试题目的检测开始好转并得到面试官技术认可。学校大学本科校招时间窗口期很多的知名公司会进入一些名校高等学府进行校园招聘。宣讲会听讲认真但是并没有发现什么长处。呆呆的看着大学生打篮球有的时候 完美世界 的宣讲会就没有再次参与。专业实习的笔试成绩前端技术勉强通过面试官的技术标准。不理想的笔试成绩很有可能会拦着大部分面试官。甲骨文Oracle公司的笔试成绩7分表示这方面可能并不弱。 突然要离开大学回到南方。无法释怀的是一些外国大学留学生的抛掷过来的奇怪眼...
Java技术
点赞
评论
收藏
分享
03-25 20:11
中国传媒大学 数据分析师
长得好看真的能提高面试通过率吗?
说句实在的,真的会,但没大家想的那么夸张。第一眼看着舒服、干净利落,面试官对你的初始好感度肯定高,尤其很多岗位看形象气质,同等条件下,长得好看确实占优势。但也就止步于“第一印象”了。真聊起专业、经历、业务能力,颜值再高也顶不上靠谱的实力,长得再好看,一问三不知照样没戏。简单说:颜值是加分项,不是必选项。收拾得清爽精神,比单纯长得好看重要多了。#长得好看会提高面试通过率吗?#
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
02-09 12:01
27届感觉看不到未来了
27届双非本计算机专业,感觉前后端挤满了人 ,于是转AI产品经理 ,学习相关知识 ,做项目改简历,但是投了半个月简历,打招呼了1k➕,只有3个约我面试,还都是那种0-20人的公司,我感觉有点不靠谱,我觉得怎么也得是中厂啊…是简历有问题吗,求指点,还是现阶段没实习没学历的我只能先去这种公司
同济一哥:
注意隐私...,你这样我要加你微信了
实习如何「偷」产出?
点赞
评论
收藏
分享
02-18 13:28
门头沟学院 Java
28届小厂面经 挂了
😢 飞书电话会议。我真的搞不懂,那些问题我基本上都回答出来了,咋回事呢。
李橙子:
都回答上了,要么是kpi要么有比你更合适的
点赞
评论
收藏
分享
03-25 15:57
已编辑
牛客运营
1天1个项目|邮件AI Agent
今天给大家带一个非常适合跟练的 Agent 项目——agents-from-scratch,LangChain 官方出品,手把手教你从零搭建一个能自动处理邮件的 AI Agent。 项目不大,代码量适中,但覆盖了 Agent 开发的所有核心概念。跟着做完,面试直接聊这个项目就够了。 这个项目做了什么? 一句话:一个能帮你自动分类、回复邮件的 AI Agent。 它会: 自动分类收到的邮件(需要回复 / 仅通知 / 垃圾邮件) 根据邮件内容起草回复 敏感操作(比如发送重要邮件)会先让你人工确认 会记住你的偏好(比如"给老板的邮件用正式语气"),越用越懂你 技术栈 Lang...
AI项目实战
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都在找Agent开发,我整理了80道相关的Agent开发面试题。
2.3W
2
...
被笔试耽误了一天day16(为什么携程第三题始终是0呢
5839
3
...
腾讯后端复试面经
5227
4
...
学院本春招逆袭年包25w
4391
5
...
AI时代,技术er的三大“职业单选题”
3878
6
...
个人总结前端Agent面试全攻略!
2937
7
...
27后端暑期实习-字节-中国广告与交易(已OC
2483
8
...
3.26 淘天暑期一面(已挂) 80MIN
1981
9
...
3.29 pdd笔试
1964
10
...
快手后端-Java开发二面面经
1829
创作者周榜
更多
正在热议
更多
#
你的实习产出是真实的还是包装的?
#
23353次浏览
371人参与
#
参加完秋招的机械人,还参加春招吗?
#
119746次浏览
754人参与
#
米连集团26产品管培生项目
#
14106次浏览
288人参与
#
拼多多工作体验
#
52253次浏览
331人参与
#
通信硬件知识分享
#
48064次浏览
537人参与
#
找AI工作可以去哪些公司?
#
14845次浏览
613人参与
#
开放七大实习专项,百度暑期实习值得冲吗
#
17727次浏览
266人参与
#
说说你知道的学历厂
#
390874次浏览
1379人参与
#
从事AI岗需要掌握哪些技术栈?
#
13142次浏览
698人参与
#
你做过最难的笔试是哪家公司
#
44198次浏览
614人参与
#
金三银四,你的春招进行到哪个阶段了?
#
23979次浏览
295人参与
#
想给25届机械人的秋招建议
#
47644次浏览
251人参与
#
AI面会问哪些问题?
#
33802次浏览
930人参与
#
中国电信笔试
#
32952次浏览
303人参与
#
我心目中的理想工作是这样的
#
100805次浏览
907人参与
#
携程笔试
#
139407次浏览
839人参与
#
这些公司卡简历很严格
#
94882次浏览
415人参与
#
拼多多集团-PDD笔试
#
37198次浏览
352人参与
#
一人说一个提前实习的好处
#
118382次浏览
711人参与
#
投递几十家公司,到现在0offer,大家都一样吗
#
342612次浏览
2190人参与
#
实习越久越好,还是多多益善?
#
91463次浏览
359人参与
#
哪些公司真双非友好?
#
70441次浏览
291人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务