飞书社招技术一面 | 飞书面经

时间

2024.05.23

问题

  1. 个人介绍
  2. 疯狂问项目(过往项目都问了一遍,大概20分钟)
  3. 感觉这块答得不够好,基本就是实话实说了,得提前润色一下才行
  4. redis、mq、mysql的一些设计或者底层实现了解吗?
  5. 问的很宽泛、重点说了mysql的b+树索引设计
  6. mysql索引的设计,会考虑哪些因素?
  7. 字段数据区分度较大
  8. left join 和 where 查询较频繁的字段
  9. 要考虑索引覆盖,避免回表查询(来自面试官善意的提醒)
  10. redis底层数据结构实现了解吗?
  11. 类比java,具体不是很清楚(被问过很多次了,需要好好复习下)
  12. 用过RPC吗?
  13. 算法:N数之和

题目描述

不重复的随机数数组[1,3,8,11,13,22,34,61,88,772],总共有10个数字。

取任意数字,不可重复取数据,求它们的和,判断结果能否等于n。

输入为数组arr,目标和n。

输出true/false

题解:

public static void main(String[] args) {
        int[] arr = new int[]{1,8,10,11,13,22,34,61,88,772};
        System.out.println(combinationSum(arr, 17));
    }

    /**
     回溯 + 剪枝
     */
    public static boolean combinationSum(int[] candidates, int target) {
        //排除不合理数组
        if(candidates.length == 0) {
            return false;
        }
        return backtrack(candidates, 0, target, 0);
    }

    static boolean backtrack(int[] candidates, int start, int target, int sum) {

        if(sum == target) {
            // 找到目标和
            return true;
        }
        if (sum > target) {
            // 超过目标和,直接结束
            return false;
        }
        boolean res = false;
        for(int i = start; i < candidates.length; i++) {
            // 做选择
            sum += candidates[i];
            // 进入下一层决策树
            res = backtrack(candidates, i + 1, target, sum);
            // 取消选择
            sum -= candidates[i];
            if (res) break;
        }
        return res;
    }

参考lc:39组合总和,不过做了简化,只要符合就返回ture,否则false

个人总结

  1. 自我介绍需要提前准备一份
  2. 项目经历需要整理文字叙述
  3. 八股需要复习,熟练后深入理解
#字节面经##面经##社招面经##社招#
全部评论

相关推荐

西安&nbsp;直管用工&nbsp;薪资7k~14k&nbsp;求职:Java开发-社招一年半小厂经验&nbsp;前端后端都在干面试的过程中感慨了平台的重要性,之前做的东西都太表层了,有时候可能一个平台才可能会有这些实际的应用场景二轮技术面&nbsp;面经攒人品(面试官职位应该比较高,并不会问八股文,全程问项目,和非常底层的知识,和一些整体的思考,奈何自己水平不够,我会附上我当时的回答,简单的记录一下给各位牛友参考)1.&nbsp;自我介绍&nbsp;&nbsp;&nbsp;&nbsp;我喜欢简单的自我介绍,就说了一下自己毕业时间,掌握哪些技术,公司参与过公司内部使用的系统,也参与过面向用户app的服务端开发工作,然后说了本次的求职岗位2.&nbsp;独立负责这个项目的时候,你为什么要使用spring&nbsp;boot架构?&nbsp;&nbsp;&nbsp;&nbsp;回答侧重点:理论上市面上最成熟的架构,本身支持自动配置减少自动配置的工作,可以很方便的集成其他的框架,并且可以自己定义一些配置3.&nbsp;使用了redis的什么能力?&nbsp;&nbsp;&nbsp;&nbsp;(redis是可以实现很多场景,但是自己直接触过缓存,希望自己未来有机会可以提升一下自己这方面的技能)只使用过他的缓存(然后本来想讲缓存的一些要点,但是想了想没讲,因为感觉没什么用,面试官想了解的应该是我是不是使用redi解决过&nbsp;会话管理-分布式锁-排行榜-消息队列&nbsp;的知识点&nbsp;不过这些都是要契合项目说的&nbsp;不可能凭空捏造)4.&nbsp;缓存不一致的场景&nbsp;&nbsp;&nbsp;&nbsp;(面试官几乎每次都强调了要契合项目说)没有出现,但是自己做了一个兜底,就是写了一个接口去主动删除缓存5.&nbsp;redis的一致性保障&nbsp;&nbsp;&nbsp;&nbsp;回答了更新策略:是更新数据库再更新redis缓存;事务支持:使用redis的事务来确保一致性(只粗浅的看过,面试的时候压根想不起来只简单的说了一下这两个知识点)6.&nbsp;redis的可靠性&nbsp;&nbsp;&nbsp;&nbsp;只回答了数据持久化&nbsp;RDB和AOF&nbsp;&nbsp;&nbsp;&nbsp;RDB:在指定的时间间隔内将数据以快照的方式保存到磁盘中&nbsp;&nbsp;&nbsp;&nbsp;AOF:记录Redis数据库在执行写操作命令,生成一个文件(因为本身没有问redis数据持久化,所以我没有回答他们之间的区别,只是简单的介绍了一下概念)7.&nbsp;从整个集群上的架构呢&nbsp;&nbsp;&nbsp;&nbsp;(已经开始听不懂了)8.&nbsp;&nbsp;redis的读写操作是不同的节点还是同一个节点9.&nbsp;&nbsp;慢查询10.&nbsp;&nbsp;用过消息中间件吗11.&nbsp;&nbsp;历史老代码优化场景
查看11道真题和解析
点赞 评论 收藏
分享
查看4道真题和解析 面试题刺客退退退
点赞 评论 收藏
分享
8 10 评论
分享
牛客网
牛客企业服务