猿辅导-内容服务后端-java实习-一面凉经

无自我介绍,看着你在白板上写题 限时30min 挂了嘻嘻😁

 题目:
 // 1. 设计一个部门 MySQL 表

// 2. 实现接口:通过 中间部门ids 获取这些节点下的叶子部门ids

// 3. 设计一个 Java 数据对象,数据对象中包含子节点列表,通过 ids 批量获取该对象

应该大概是这样吧 重点把数据库表 & sql & 多叉树递归 写出来应该可以
建表语句:
create table debt(

    debt_id bigint primary key,

    parent_id bigint
);

service层:
//通过部门id查询叶子部门id列表
public List<Long> getDebtById(Long id){
    if(id == null){
        return new ArrayList<>();
    }
    return debetMapper.getDebtById(id);    
}

//通过部门id列表查所有叶子部门id
public List<Long> getDebtByIds(List<Long> ids){
    if(ids == null || ids.isEmpty()){
        return new ArrayList<>();
    }
    List<Long> leafIds = new ArrayList<>();
    for (Long id : ids) {
        getLeafDebtByIdRecursive(id, leafIds);
    }
    return leafIds;
}
 private void getLeafDebtByIdRecursive(Long id, List<Long> leafIds) {
        List<DebetDO> children = debetMapper.getChildrenByParentId(id);
        if (children == null || children.isEmpty()) {
            // 没有子部门,说明是叶子部门
            leafIds.add(id);
            return;
        }
        // 有子部门,递归往下找
        for (DebetDO child : children) {
            getLeafDebtByIdRecursive(child.getDebtId(), leafIds);
        }
    }

java对象:
@Data
class DebetDO{

    Long debtId;

    Long parentId;

    List<DebetDO> children = new ArrayList<>();
}

mapper层:
public interfece DebetMapper{

    List<Long> getDebtById(@Param("id")Long id);

    List<Long> getDebtByIds(@Param("ids")List<Long> ids);
}

DebetMapper.xml:、
// select debet_id from debt where parent_id = {};
// 如果是间接的部门怎么去查询
// 子查询:先把二级部门查出来,然后去查三级部门 ,这个要是所有的子部门全部查出来怎么查
//select debet_id from debt where parent_id = {id}
<select id="getDebtByIds" resultType="long" parameterType="list">
    SELECT debt_id FROM debt
    WHERE parent_id = #{parentId}
</select>

// select debet_id from debt where parent_id in {};
<select id="getDebtByIds" resultType="long" parameterType="list">
    SELECT debt_id FROM debt
    WHERE parent_id IN
    <foreach collection="ids" item="id" open="(" close=")" separator=",">
        #{id}
    </foreach>
</select>



#面试问题记录#
面筋(烤面筋) 文章被收录于专栏

烤面筋~烤面筋~三元一串,五元两串

全部评论
手写?
点赞 回复 分享
发布于 08-16 19:30 湖北
之前让我手撕线程池
点赞 回复 分享
发布于 08-16 16:35 上海
很强了佬,小花已送出,顺便分享一个自己做的 GitHub 里程序员问题案例分析以面经整理项目 0voice/Career_planning_path,有 20多颗star了,希望能帮助到大家
点赞 回复 分享
发布于 08-16 15:14 湖南
这么抽象吗
点赞 回复 分享
发布于 08-15 21:17 江西
兄弟们可以给我送点🌹🌹 不 让我做什么都行
点赞 回复 分享
发布于 08-15 18:26 山东

相关推荐

08-18 16:57
已编辑
门头沟学院 Java
蒟蒻一枚呢:团子正式批还没开始面试呢,这咋都考试oc了
点赞 评论 收藏
分享
08-16 17:07
门头沟学院 Java
自我介绍相关介绍一下你的教育背景和实习经历。Java&nbsp;基础final&nbsp;关键字可以用在哪些地方?有什么含义?如果&nbsp;final&nbsp;修饰的是一个&nbsp;ArrayList,是否还能往里面添加元素?Java&nbsp;中新建线程有哪些方式?线程池的核心参数有哪些?它们的作用分别是什么?核心线程数、最大线程数、等待队列之间是如何协作的?线程池的拒绝策略有哪些?数据库相关你在滴滴的项目中提到“双表结构”和“唯一索引机制”,能详细解释一下吗?乐观锁在你们项目中是怎么实现的?延迟队列是如何实现的?订单超时未支付如何处理?索引优化主要做了哪些?为什么嵌套集模型查询更高效?聚集索引和非聚集索引有什么区别?什么是覆盖索引?联合索引在什么情况下会失效?什么是最左匹配原则?违反后会有什么影响?InnoDB&nbsp;的事务四大特性&nbsp;(ACID)&nbsp;分别是什么?事务隔离级别有哪些?各自解决了哪些问题?InnoDB&nbsp;默认隔离级别是什么?如何避免幻读?MVCC&nbsp;是如何实现的?undo&nbsp;log&nbsp;的作用是什么?Redis&nbsp;相关Redis&nbsp;常见的数据结构有哪些?你最常用的是哪种数据结构?如何用&nbsp;Redis&nbsp;实现分布式锁?setnx&nbsp;ex&nbsp;和&nbsp;Redlock&nbsp;算法?Redis&nbsp;的持久化方式有哪些?如果要遍历&nbsp;Redis&nbsp;中所有&nbsp;key,该如何做才能避免影响线上业务?如何判定并处理热点数据?算法题给定数组,输出“除自身外数组元素的乘积”,你会如何实现?(前缀积+后缀积)
查看26道真题和解析
点赞 评论 收藏
分享
评论
10
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务