【字节跳动】9-22秋招测试开发一面面经+投票收集

【字节跳动】10-09秋招抖音电商测试开发三面面经:https://www.nowcoder.com/discuss/767720
------------------------------------------------------------------------------------------------------------------------------------

记忆中是这些,还有蛮多。问题问了40+分钟,做题15分钟。
答得不好,评价说知识懂得不够深。



1、接口如何保证幂等

  • 对于“删除、查询”操作,天然支持幂等;对于“查询、增量修改”需要保证幂等。
  • token+缓存机制:数据提交前要向服务的申请token,提交后后台校验token,同时删除token,生成新的token返回。redis要用删除操作来判断token,删除成功代表token校验通过,如果用select+delete来校验token,存在并发问题,不建议使用
  • 锁机制乐观锁、悲观锁(悲观锁使用时一般伴随事务一起使用)、分布式锁(对于分布式系统)
  • select + insert:并发不高的后台系统,或者一些任务JOB,为了支持幂等,支持重复执行,简单的处理方法是,先查询下一些关键数据,判断是否已经执行过,在进行业务处理,就可以了(核心高并发流程不要用这种方法)
  • 唯一主键(要求非自增):当表已经存在唯一主键,并发时新增报错时,再查询一次就可以了,数据应该已经存在了,返回结果即可。

2、数据库索引种类

按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引
按物理存储分类可分为:聚簇索引、二级索引(辅助索引)
按字段特性分类可分为:主键索引、普通索引、前缀索引

按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)



3、索引数据结构



4、B+树特点



5、索引失效的情况

preview

https://segmentfault.com/a/1190000021464570


6、如何查看语句是否命中索引

  1. 先通过 Explain 命令来分析低效SQL的执行计划,在SQL语句前加上‘Explain ’,如explain select * from adminlog。
  2. 再看type类型,如果是‘all’,则说明是全表扫描。除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引。
  3. key用来查询真正使用到的索引,key_len用来用于处理查询的索引长度。
  4. type依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL


7、如何实现分页查询

LIMIT + OFFSET;

https://www.liaoxuefeng.com/wiki/1177760294764384/1217864791925600


8、类的加载过程

https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/jvm/%E7%B1%BB%E5%8A%A0%E8%BD%BD%E8%BF%87%E7%A8%8B.md


9、AOP的原理

JDK动态代理、cglib代理

https://bbs.huaweicloud.com/blogs/detail/164988


10、HTTP头部的内容

HTTP的头域包括通用头、请求头、响应头和实体头四个部分。
  • 通用头至少包括:是否缓存Cache-Control、是否长连接Connection;
  • 请求头至少包括:接收类型Accept、接收字符集Accept-Charset、接收编码方式Accept-Encoding、浏览器标识User-Agent、服务器域名Host、来源Referer;
  • 实体头至少包括:重定向地址Location、响应编码方式Content-Encoding、响应类型Content-Type;

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers


11、SpringBoot中Bean的创建模式

  • singtone单例模式
  • prototype多例模式


12、线程池种类

https://blog.csdn.net/w05980598/article/details/79425071


13、创建线程池的关键参数


https://juejin.cn/post/6844903554986049543


14、TCP的CLOSE_WAIT和TIME_WAIT出现场景

https://www.cnblogs.com/cangqinglang/p/13185825.html


15、CLOSE_WAIT和TIME_WAIT过多的影响


  • 1. 占用系统内存
  • 2. 如果连接数满了就不能对相应的对段端口创建连接了
  • 3. 假设你的程序会去连接另一个服务,而未正常关闭,那么可能导致你的程序超过最大连接数的时候报异常,引起连锁反应甚至导致程序崩溃
  • 4. 网上有说法可能会导致系统扫描端口连接,影响cpu,但是测试中未发现这个问题
https://blog.csdn.net/virnet/article/details/78209899


16、如何解决15题的情况

https://blog.csdn.net/weixin_44718794/article/details/108649255

17、创建对象的方式(除了new)

  1. 使用new关键字
  2. Class对象的newInstance()方法
  3. 构造函数对象的newInstance()方法
  4. 对象反序列化
  5. Object对象的clone()方法

https://www.jianshu.com/p/b671b5c62609


18、 算法题:两个栈实现堆的效果

https://leetcode-cn.com/problems/implement-queue-using-stacks/solution/yong-zhan-shi-xian-dui-lie-by-leetcode/

#字节跳动##面经##校招##测试开发工程师#
全部评论
好难...
点赞 回复 分享
发布于 2021-09-27 16:51
这确定是侧开?
点赞 回复 分享
发布于 2022-02-25 19:10
【内推】【实习】蚂蚁2023届团队直推,全程跟进 🔥蚂蚁数字金融线2023届实习生招聘火热开始啦 蚂蚁金服数字金融线2023届实习生招聘火热开始啦,感兴趣的学弟学妹快到碗里来~ 一、数字金融线主要做什么? 在数字金融领域,蚂蚁集团与超过2000家金融机构合作,为用户提供普惠的数字金融服务,包括消费信贷、线上理财、保险、商业信用评估等服务,推出了花呗、借呗、蚂蚁保保险、蚂蚁财富、芝麻信用等广受欢迎的品牌。 二、招聘岗位有哪些? 测试开发实习生 java研发实习生 三、在这里能获得什么? 1、提前了解蚂蚁的业务、研发流程和技术体系 2、提前了解职位日常的工作状态和工作内容 3、定制化的实习生个人成长路线,师兄全程辅导,有机会直接转正 四、我们的福利 1、我们会提供极具市场竞争力的薪酬 2、健身房、员工餐厅、年度 Outing 等海量福利 五、我们的要求 本科及以上学历,计算机、电子信息等相关专业 熟悉Java/C++等至少一种编程语言 熟悉基础数据结构和常用算法等 热爱技术、积极乐观,责任心强,好沟通易合作 投递方式: 发送简历至邮箱 nicky.ly@alibaba-inc.com (邮件主题为: 应聘职位+学校+姓名+手机号) 只要发邮件一定会回复,如果没有回复可能是没有收到,此外也可通过微信(zhuxiaoxiaoup)联系。 欢迎进群交流~
点赞 回复 分享
发布于 2022-02-28 17:04

相关推荐

不愿透露姓名的神秘牛友
昨天 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
9 101 评论
分享
牛客网
牛客企业服务