首页 > 【字节跳动】9-22秋招测试开发一面面经+投票收集
头像
洛枫、
编辑于 2021-10-09 12:58
+ 关注

【字节跳动】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/

更多模拟面试

全部评论

(3) 回帖
加载中...
话题 回帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐