关于java:面试Java字节面经已获Offer

55次阅读

共计 2714 个字符,预计需要花费 7 分钟才能阅读完成。

前言

要么字节跳动,要么心脏跳动,你选哪个?哈哈哈,为大家筹备的字节三面面经,前面有总结面试教训,以及相干面试技巧,请自行浏览。怕你忘了找不到,举荐先珍藏,再浏览。

一面

  1. 在校我的项目后端是怎么搭建的
  • 答:tomcat,springboot, mybatis
  • 备注:

这里没答好,应该扩大一下,说过后大三程度无限没有做高可用,如果当初做会用 VIP+ 双 ng+ 双服务做简略高可用

  1. “小程序不反对缓存二进制,因而将小图片 BASE64 编码后缓存到本地”,还有没有其余优化计划
  • 答:优化计划是 CDN,讲了 CDN 大略原理
  • 备注:

还能够答图片压缩

  1. 联合我的项目讲下加解密计划
  • 答:讲了非对称加密(两种利用场景)、数字摘要、数字签名、对称加密、SSL,讲了很久
  1. 报表接口怎么写的,怎么反对免部署灵便批改
  • 答:各种 CASE WHEN、IFNULL,把 sql 存数据库,从 db 取出 sql 再执行,有治理后盾随时改
  1. es 怎么聚合计算
  • 答:不会
  1. es 怎么做 range 查问
  • 答:讲了 es 的分片、路由,暴力 range 计划
  1. es 分词原理
  • 答:答了分词过程、倒排索引等
  1. new 一个对象的生命周期
  • 答:讲了 jmm,答了很久
  1. 老年代除了空间不够,还有什么时候会触发 fgc
  • 答:System.gc() 也会触发,生产环境个别加 DisableExplicitGC 禁用 System.gc()
  1. 新生代的对象年龄达到 15 的时候,会降职到老年代,为什么是 15?
  • 答:应该是经验值,如果定的太小,可能对象到了老年代之后很容易死亡,如果太大,可能对象在新生代始终复制,减少开销
  • 备注

正确答案,应该是因为对象头的 markword 局部,存分代年龄的 age 字段的二进制长度是 4,所以最大值是 15

  1. mysql 为什么要有最左前缀原理
  • 答:是 B + 树的构造决定了最左前缀,答了 mysql 的页构造(闲暇区,用户记录区,页目录..)、索引构造、聚簇索引、二级索引,答了很久
  1. 算法题
  • 父串里找子串,即 indexOf

    • 答:没写出 KMP,写了暴力

备注:

  • 面试时,有发问“子串不存在时返回什么”,“子串呈现屡次是否返回第一个”,还有一个非凡状况没有思考到:子串为空字符时返回什么
  • 还有比 KMP 更快的字符串匹配算法: BM(Boyer-Moore)算法

    • 暴力代码运行通过后,让我回顾 KMP,没回顾起来,只说了有个 next 数组 …

二面

  1. 联合我的项目问
  2. 我的项目里 F5 怎么实现会话放弃
  • 答:加 cookie
  1. 诘问 ISO 七层模型,F5 加 cookie 在哪一层,ip hash 在哪一层
  • 备注:

cookie 是 http 协定才有的,所以在应用层
ip hash 有可能在应用层,也可能在网络层,如果是 client->lb lb->server 这种模式,就是应用层,因为须要从新发动 http 申请,如果是通过 DNAT 协定批改指标地址实现的,那就是网络层

  1. F5 跟 Ha 区别,为什么 F5 性能比 Ha 好,硬件配置雷同的状况下,F5 还比 Ha 好吗
  • 备注:

“为什么 F5 性能比 Ha 好”过后没答出来,正确答案应该是个别状况下,F5 是四层负载平衡,Ha 是七层。然而 F5 也能够七层负载平衡,这个时候性能应该不会差太多

  1. lvs 的 dr 模式
  2. keepalived 的 VIP 漂移原理
  • 备注:

没答出来,答案是 VRRP 协定

  1. 讲本人比拟善于的技术
  • 讲了 innodb 页构造、索引原理
  1. sql 调优教训
  2. 我的项目整个数据库的最大的表有多大
  3. 微服务框架相熟哪个
  4. 看过哪些源码
  • 答 hashmap,问 hashmap 的容量为什么是 2 的 n 次方
  1. 最近在学什么,为什么学
  2. 怎么了解高可用
  3. 面试官:你有什么要问我的吗
  • 问:有哪些方面须要补强
  • 面试官:我的项目比拟传统,其余还好

三面

  1. 介绍我的项目难点
  2. 零拷贝
  3. FGC 的几张状况,怎么排查问题
  4. 手机刷抖音的时候,视频忽然卡住,有哪些起因
  5. 为什么到职
  6. 没有算法,总共半小时差不多

总结

筹备好一些高频问题,蕴含技术类和非技术类

  • 技术类:
  • 看过哪些源码
  • 对哪个技术比拟相熟
  • 最近在学什么,为什么
  • 我的项目有哪些地方须要改良
  • 我的项目有哪些难点
  • 怎么应答突发流量

非技术类:

  • 平时怎么学习的,新常识怎么学习
  • 本人有哪些优缺点
  • 共事怎么评估本人
  • 为什么到职
  • 还有什么要问的

介绍我的项目技巧

  • 讲我的项目肯定要谨慎,讲太深的话,任何一个名词,面试官都可能深刻发问,导致本人答不上来;讲太浅的话,面试官会感觉我的项目难度不够,没趣味听;
  • 说我的项目的时候,说完痛点,而后说解决方案一二三,以及各自的优缺点,最初生产选了什么计划,面试时,逻辑是否清晰也是很重要的考查指标;
  • 突出对业务的深刻理解;
  • 用具体的数字阐明状况,如 qps、db 数据量等;
  • 把八股文交叉到我的项目里

算法题技巧

  • 留神代码标准,比方正文后行(先写正文再写代码)、对非凡状况的返回值写好正文(比方入参为空时返回什么)
  • 长于向面试官发问,体现本人的逻辑能力,以“从父串寻找子串为例(即实现 indexOf 办法)”,能够提的问题有:

    • 子串在父串中没有呈现,返回什么
    • 子串为空,返回什么
    • 子串呈现屡次,是否只返回第一个地位
  • 如果工夫足够,按下面的来,如果工夫不够,就不要思考太多边界状况啥的,能过一个 case 就行

其余技巧

  • 语速不要太快,不然面试官了解不了;
  • 至多要有一个性能足够牛逼,能够吹很久很久,问我的项目难点等时候才能够吹;
  • 至多要有一项技术足够深刻学习,redis、mysql、jvm… 都行,吹上了就大大加分;
  • 答复问题的时候,先说论断,再说过程,晓得论断的前提下,听你讲过程,容易了解;
  • 不要一开始就投一堆公司,很可能面完一两场发现简历须要批改;
  • 大厂 hr 面不要扯谎,hr 相当业余,很容易看进去;
  • 面试其实就是八股文、我的项目、算法三个方面,三方面都没问题,那就稳了。八股文能够背,我的项目能够包装,但算法只能靠积攒。想进大厂,先刷题,半年起步。

常见问题示例

  • 还有什么要问的
  • 答:

    • hr 面:造就体系和降职机制
    • 技术面:有哪些方面须要增强,或者向面试官求教一些职场教训
    • 备注:人类最须要的货色是认可,向面试官求教职场教训,他说完后,你示意非常认可,他就失去了人类最须要的货色。
  • 为什么到职

    • 想到更好的平台,做更有挑战性的工作,同时也心愿身边有更多优良的人
  • 怎么学习的

    • 通过看书进步深度,通过公众号、专栏、博客等碎片化形式进步广度;
    • 看得懂 / 听得懂不肯定真的懂,讲的进去才是真的懂,所以学习一个知识点后要自问自答;
    • 看书选经典书籍;
    • 学习时要长于提出问题,依据问题深究细节,没有问题才是最大的问题

参考资料

修行者 12138——程序员面试教训 (https://www.jianshu.com/p/c23…

絮叨

非常感谢你能看到这里,如果感觉文章写得不错 求关注 求点赞 求分享 (对我十分十分有用)。
如果你感觉文章有待进步,我非常期待你对我的倡议,求留言。
如果你心愿看到什么内容,我非常期待你的留言。
各位的捧场和反对,是我创作的最大能源!

正文完
 0