共计 2714 个字符,预计需要花费 7 分钟才能阅读完成。
前言
要么字节跳动,要么心脏跳动,你选哪个?哈哈哈,为大家筹备的字节三面面经,前面有总结面试教训,以及相干面试技巧,请自行浏览。怕你忘了找不到,举荐先珍藏,再浏览。
一面
- 在校我的项目后端是怎么搭建的
- 答:tomcat,springboot, mybatis
- 备注:
这里没答好,应该扩大一下,说过后大三程度无限没有做高可用,如果当初做会用 VIP+ 双 ng+ 双服务做简略高可用
- “小程序不反对缓存二进制,因而将小图片 BASE64 编码后缓存到本地”,还有没有其余优化计划
- 答:优化计划是 CDN,讲了 CDN 大略原理
- 备注:
还能够答图片压缩
- 联合我的项目讲下加解密计划
- 答:讲了非对称加密(两种利用场景)、数字摘要、数字签名、对称加密、SSL,讲了很久
- 报表接口怎么写的,怎么反对免部署灵便批改
- 答:各种 CASE WHEN、IFNULL,把 sql 存数据库,从 db 取出 sql 再执行,有治理后盾随时改
- es 怎么聚合计算
- 答:不会
- es 怎么做 range 查问
- 答:讲了 es 的分片、路由,暴力 range 计划
- es 分词原理
- 答:答了分词过程、倒排索引等
- new 一个对象的生命周期
- 答:讲了 jmm,答了很久
- 老年代除了空间不够,还有什么时候会触发 fgc
- 答:System.gc() 也会触发,生产环境个别加 DisableExplicitGC 禁用 System.gc()
- 新生代的对象年龄达到 15 的时候,会降职到老年代,为什么是 15?
- 答:应该是经验值,如果定的太小,可能对象到了老年代之后很容易死亡,如果太大,可能对象在新生代始终复制,减少开销
- 备注
正确答案,应该是因为对象头的 markword 局部,存分代年龄的 age 字段的二进制长度是 4,所以最大值是 15
- mysql 为什么要有最左前缀原理
- 答:是 B + 树的构造决定了最左前缀,答了 mysql 的页构造(闲暇区,用户记录区,页目录..)、索引构造、聚簇索引、二级索引,答了很久
- 算法题
父串里找子串,即 indexOf
- 答:没写出 KMP,写了暴力
备注:
- 面试时,有发问“子串不存在时返回什么”,“子串呈现屡次是否返回第一个”,还有一个非凡状况没有思考到:子串为空字符时返回什么
还有比 KMP 更快的字符串匹配算法: BM(Boyer-Moore)算法
- 暴力代码运行通过后,让我回顾 KMP,没回顾起来,只说了有个 next 数组 …
二面
- 联合我的项目问
- 我的项目里 F5 怎么实现会话放弃
- 答:加 cookie
- 诘问 ISO 七层模型,F5 加 cookie 在哪一层,ip hash 在哪一层
- 备注:
cookie 是 http 协定才有的,所以在应用层
ip hash 有可能在应用层,也可能在网络层,如果是 client->lb lb->server 这种模式,就是应用层,因为须要从新发动 http 申请,如果是通过 DNAT 协定批改指标地址实现的,那就是网络层
- F5 跟 Ha 区别,为什么 F5 性能比 Ha 好,硬件配置雷同的状况下,F5 还比 Ha 好吗
- 备注:
“为什么 F5 性能比 Ha 好”过后没答出来,正确答案应该是个别状况下,F5 是四层负载平衡,Ha 是七层。然而 F5 也能够七层负载平衡,这个时候性能应该不会差太多
- lvs 的 dr 模式
- keepalived 的 VIP 漂移原理
- 备注:
没答出来,答案是 VRRP 协定
- 讲本人比拟善于的技术
- 讲了 innodb 页构造、索引原理
- sql 调优教训
- 我的项目整个数据库的最大的表有多大
- 微服务框架相熟哪个
- 看过哪些源码
- 答 hashmap,问 hashmap 的容量为什么是 2 的 n 次方
- 最近在学什么,为什么学
- 怎么了解高可用
- 面试官:你有什么要问我的吗
- 问:有哪些方面须要补强
- 面试官:我的项目比拟传统,其余还好
三面
- 介绍我的项目难点
- 零拷贝
- FGC 的几张状况,怎么排查问题
- 手机刷抖音的时候,视频忽然卡住,有哪些起因
- 为什么到职
- 没有算法,总共半小时差不多
总结
筹备好一些高频问题,蕴含技术类和非技术类
- 技术类:
- 看过哪些源码
- 对哪个技术比拟相熟
- 最近在学什么,为什么
- 我的项目有哪些地方须要改良
- 我的项目有哪些难点
- 怎么应答突发流量
非技术类:
- 平时怎么学习的,新常识怎么学习
- 本人有哪些优缺点
- 共事怎么评估本人
- 为什么到职
- 还有什么要问的
介绍我的项目技巧
- 讲我的项目肯定要谨慎,讲太深的话,任何一个名词,面试官都可能深刻发问,导致本人答不上来;讲太浅的话,面试官会感觉我的项目难度不够,没趣味听;
- 说我的项目的时候,说完痛点,而后说解决方案一二三,以及各自的优缺点,最初生产选了什么计划,面试时,逻辑是否清晰也是很重要的考查指标;
- 突出对业务的深刻理解;
- 用具体的数字阐明状况,如 qps、db 数据量等;
- 把八股文交叉到我的项目里
算法题技巧
- 留神代码标准,比方正文后行(先写正文再写代码)、对非凡状况的返回值写好正文(比方入参为空时返回什么)
长于向面试官发问,体现本人的逻辑能力,以“从父串寻找子串为例(即实现 indexOf 办法)”,能够提的问题有:
- 子串在父串中没有呈现,返回什么
- 子串为空,返回什么
- 子串呈现屡次,是否只返回第一个地位
- 如果工夫足够,按下面的来,如果工夫不够,就不要思考太多边界状况啥的,能过一个 case 就行
其余技巧
- 语速不要太快,不然面试官了解不了;
- 至多要有一个性能足够牛逼,能够吹很久很久,问我的项目难点等时候才能够吹;
- 至多要有一项技术足够深刻学习,redis、mysql、jvm… 都行,吹上了就大大加分;
- 答复问题的时候,先说论断,再说过程,晓得论断的前提下,听你讲过程,容易了解;
- 不要一开始就投一堆公司,很可能面完一两场发现简历须要批改;
- 大厂 hr 面不要扯谎,hr 相当业余,很容易看进去;
- 面试其实就是八股文、我的项目、算法三个方面,三方面都没问题,那就稳了。八股文能够背,我的项目能够包装,但算法只能靠积攒。想进大厂,先刷题,半年起步。
常见问题示例
- 还有什么要问的
答:
- hr 面:造就体系和降职机制
- 技术面:有哪些方面须要增强,或者向面试官求教一些职场教训
- 备注:人类最须要的货色是认可,向面试官求教职场教训,他说完后,你示意非常认可,他就失去了人类最须要的货色。
为什么到职
- 想到更好的平台,做更有挑战性的工作,同时也心愿身边有更多优良的人
怎么学习的
- 通过看书进步深度,通过公众号、专栏、博客等碎片化形式进步广度;
- 看得懂 / 听得懂不肯定真的懂,讲的进去才是真的懂,所以学习一个知识点后要自问自答;
- 看书选经典书籍;
- 学习时要长于提出问题,依据问题深究细节,没有问题才是最大的问题
参考资料
修行者 12138——程序员面试教训 (https://www.jianshu.com/p/c23…
絮叨
非常感谢你能看到这里,如果感觉文章写得不错 求关注 求点赞 求分享 (对我十分十分有用)。
如果你感觉文章有待进步,我非常期待你对我的倡议,求留言。
如果你心愿看到什么内容,我非常期待你的留言。
各位的捧场和反对,是我创作的最大能源!