- 博客(57)
- 收藏
- 关注
原创 SQL & AI coding 笔试题记录(模拟)-1
要求计算指定时间范围内创建的订单中,至少发生过一次 PAY_SUCCESS 事件的订单占比。loop.time() 返回事件循环的内部单调时钟(不是 time.time())请实现一个简单的异步请求合并机制,使相同 Key 的并发请求共享一次执行结果。get_running_loop() 获取当前事件循环(不能在同步函数里调)注意:必须使用订单支付时已经生效的最新汇率,而不是当前最新汇率。假设每笔订单的 order_id 唯一,且支付事件数据完整。SQL:计算订单支付转化率,避免重复支付事件导致结果错误。
2026-11-02 17:02:57
157
原创 算法Day 6 BFS+回溯
最直观的方法是枚举所有可能的数字组合,再判断总和是否等于 target,但搜索空间会非常大,而且容易生成大量无效组合。为了避免 [2,3,2] 和 [2,2,3] 这类只是顺序不同的重复组合,我让下一层只能从当前下标及其之后继续选择。我会使用 DFS 回溯,在每一层选择一个候选数字,同时记录剩余 target。因为题目允许同一个候选数字重复使用,所以选择 candidates[i] 后,下一层仍然可以从 i 开始。很多分支在当前和已经超过 target 后仍然继续搜索,实际上这些分支已经不可能产生答案。
2026-09-17 03:26:57
120
原创 数据开发每日面试题Day6
来源:真实公开面经|字节跳动数据开发,2026-09-09;近期 2026-09-09 的字节数据开发秋招面试已经直接沿着这条链连续追问,所以这不是我为了补教材硬出的题。来源:真实公开面经|字节跳动|数据开发|面试时间:2026-09-09|难度:★★★★☆。来源:真实面经型高频题;来源:真实公开面经|字节跳动|数据开发|2026-09-09|难度:★★★★☆。来源:公开大数据面经长期高频;腾讯数据工程面经记录过此追问|难度:★★★★☆。来源:结合 DB2/GBase/存储过程经历设计|难度:★★★★★。
2026-09-16 17:01:13
216
原创 算法 Day 5 树 / 二叉树 + DFS
假设我们求一棵树节点数量。整棵树节点数 = 左子树节点数 + 右子树节点数 + 当前节点return 0注意这里发生了什么。不会自己把整棵树算出来。“左边你自己算。“右边你自己算。“算完告诉我,我再 +1。这就是树递归最核心的思想。表示:从当前 root 出发,是否存在一条到叶子的路径,其节点和为 targetSum。问题交给左右子树完整代码if not root.left and not root.right : # 左右孩子都为空 → 当前节点是叶子。
2026-09-16 16:16:51
136
原创 算法Day 4 二分查找+Heap/Top K
一个元素。它仍然需要被检查。就可能漏掉这个元素。不同二分模板可以用 < 或 <=,关键在于你的区间定义必须前后一致。闭区间模板 + 半开区间条件混着写。
2026-09-15 20:40:02
93
原创 数据开发每日面试题 Day 5
近期 2026 面经整理里,Redis 持久化已经出现从“RDB/AOF 是什么”继续追到混合持久化、宕机后可能损失多少数据的趋势。牛客近期收录的这场面试明确记录了“Spark 参数怎么调”,随后继续追问 Hive、Spark、数据湖等分布式架构共有的性能瓶颈。来源:近期公开面经|字节跳动|数据开发与数据分析岗|面试时间 2026-03-31|难度:★★★★☆。RDB 快,AOF 安全,所以生产一定用 AOF。来源:针对银行数仓场景设计|难度:★★★★★。来源:针对项目设计|难度:★★★★☆。
2026-09-15 18:24:19
149
原创 数据开发每日面试题 Day 4
难度:★★★☆☆|考察:维度建模、事实表order_fact你首先应该回答:一行代表什么?一张订单一个订单商品这两个完全不同。很可能重复计算。推荐口述事实表设计首先应该声明粒度,也就是一行事实究竟代表什么业务事件。只有粒度确定后,才能正确选择维度和度量,否则 Join 或聚合时很容易发生重复计数。追问粒度应该越细越好吗?通常数仓倾向保存较细粒度事实以支持更多分析数据量业务需求存储成本查询性能不是无限细。
2026-09-15 03:28:57
164
原创 数据开发每日面试题 Day3
我不会直接假设是某个组件丢数据,而会先确认源端和目标端的统计口径是否一致,然后沿数据链路逐层建立可对账的数量指标,定位数据从哪个节点开始出现差异。如果 Flink 输出完整,则进一步检查 Doris 的导入错误、Reject、Schema 以及数据模型。尤其对于 CDC 链路,还需要区分变更事件数量和最终业务实体数量,因为 Unique Key Upsert 会合并同一个业务 Key 的多个变更事件。“9 月 7 日的数据还没完整结束,你能计算 9 月 7 日次留吗?
2026-09-15 00:26:05
79
原创 算法 Day3-队列 / deque + 链表
list1 不是一个"链表对象",它就是一个 ListNode 对象的引用(指针),指向这条链表的第一个节点。高效地添加(append)和弹出(pop)元素,时间复杂度均为 O(1)。每个节点访问一次,时间 O(n),只使用常数个指针,额外空间 O(1)。用 list.pop(0) 模拟队列,忽略它的 O(n) 移动成本。环形链表知道快慢指针,却解释不了为什么快指针最终能追上慢指针。list1 自己就是头,list1.val 是读头节点的值。实际上只保留候选答案。list1 只是一个指向头节点的指针。
2026-09-14 22:35:20
242
原创 算法 Day 2 滑动窗口 + 栈 / 单调栈
连续区间 + 条件动态变化 → 想滑动窗口。后进先出 / 配对 / 最近一个更大或更小元素 → 想栈,尤其是单调栈。
2026-09-11 00:17:01
225
原创 数据开发每日面试题 Day 2
所以生产数仓应该把数据质量检查作为任务链路的一部分,包括数据量波动、唯一性、空值率、值域、完整性以及上下游对账。我会按照部门进行 partition,工资降序排序。因为题目求的是第二高的工资档位,并且可能存在多人同薪,所以应该使用 dense_rank,而不是 row_number。理论上某些特殊场景可以做拆分,但通常会显著增加任务复杂度,并不能改变“整体数据很大”的本质。难度:★★★★☆|考察:Spark 内存、Shuffle、数据结构。难度:★★★★☆|考察:Join、Shuffle、分桶、数据设计。
2026-09-10 18:03:28
186
原创 算法 Day1-数组 / 哈希 + 双指针
哈希表是一种通过哈希函数将 Key 映射到存储位置的数据结构,底层通常基于桶数组实现。在查询一个 Key 时,首先计算 Key 的 hash 值,再根据 hash 值定位到对应的 bucket,而不需要像线性表一样从头遍历,因此在哈希分布比较均匀的情况下,查找、插入和删除的平均时间复杂度可以达到 O(1)。但是不同 Key 可能映射到同一个位置,这叫哈希冲突。常见解决方式包括链地址法和开放寻址法。因此哈希表的 O(1) 一般指平均时间复杂度,极端冲突情况下性能可能退化。
2026-09-10 16:42:48
114
原创 数据开发每日面试题 Day 1
对于连续日期,日期减去序号后会得到相同的值,因此可以用这个值作为连续区间标识,再统计每段长度,最后取每个用户的最大值。Redis 更适合低延迟 Key-Value 查询,而 Doris 是面向分析型查询的 MPP OLAP 数据库,因此实时链路可以把部分热点指标写 Redis 服务在线查询,同时将明细或聚合数据写 Doris 支撑复杂分析。相比行式存储,列式存储在查询部分字段时可以减少不必要的数据读取,也更有利于压缩,因此比较适合 Hive 这种以分析查询为主的场景。或者给 NULL 增加随机值分散。
2026-09-09 21:17:30
140
原创 数据开发实时项目问题整理
AOF,全称 Append Only File,会持续记录 Redis 的写操作,并在重启时通过重放日志恢复数据,因此数据持久性通常更好,但文件更大、恢复和持续写入成本也更高。但 Hive 的分区分桶更多体现在 HDFS/对象存储上的目录和文件组织,而 Doris 是自身管理存储的分布式 OLAP 数据库,分桶之后会形成 Tablet,Tablet 的 Replica 会实际分布到不同 BE 节点,因此 Doris 的分桶还直接关系到数据分布、并行查询和集群负载。Job 会形成多个执行 Task;
2026-09-09 20:22:35
63
原创 银行保函业务
建筑公司A:保函申请人,向银行申请开立保函。设备供应商B:保函受益人,在建筑公司A未能履约时可以申请保函赔偿。银行C:保函开立人,提供财务担保,确保受益人的权益。
2024-08-23 17:19:29
2303
原创 贴现与转贴现
贴现:是持票人将未到期票据提前变现的一种融资方式。贴现人(公司A):持有票据并申请贴现的企业。承兑人(公司B):签发票据并在到期时支付票面金额的企业。贴入人(银行C):为持票人提供贴现服务,并在票据到期时向承兑人兑付的银行或金融机构。
2024-08-12 17:01:59
1332
1
原创 金融同业业务
1.定义:信用拆借是指银行或者其他金融机构之间在短期内相互借贷资金,以满足流动性需求或者投资机会。这种借贷通常不需要抵押品,仅仅依赖于双方的信用。2.期限:信用拆借的期限通常较短,最常见的是隔夜拆借,但也可以是数天、数周或数月。3.利率:拆借利率通常根据市场利率浮动,常见的基准利率包括伦敦银行间拆放款利率(LIBOR)和上海银行间同业拆放利率(SHIBOR)等。
2024-08-12 16:15:24
1569
原创 银行贷款业务
表内欠息余额指的是已经计入银行资产负债表中的贷款利息部分,但是尚未实际收到的利息。这些利息是按照贷款合同约定的利率和时间计算的,属于应收未收部分,银行在会计报表中将其列为应收利息。主要特点:指的是由于贷款本息逾期或其他原因,没有计入银行资产负债表中的利息部分。表外欠息通常发生在贷款逾期时间较长,银行出于审慎性原则,不再将其计入应收利息,而是转入表外管理。主要特点:举例说明假设一家银行向企业A发放了一笔贷款,约定每季度支付一次利息:1.正常计提利息:2.逾期欠息:总结表内欠息余额和表外欠息余额分别代表了贷
2024-08-12 15:58:41
5463
原创 SQL拆分字段内容(含分隔符)
对于如何控制循环,我们需要引入一个序列数,上述文章使用了MySQL中的系统表中的ID作为序列,我们可以新建一个表,存入这个自增序列作为辅助,因为希望在一个sql中完成这个操作,因此我这里使用row_number()over()函数自己创建一个序列。在做数据迁移的过程中,我们希望对表中的某个字段根据分隔符进行拆分,得到多条数据,原代码有点意思,因此记录一下。将逗号替换为空格,用含逗号的字符串的长度减去不含逗号的字符串长度,得到的就是逗号的数量,也就是循环的次数。我们需要将其分为四段,每个逗号作为分隔。
2024-02-08 16:52:26
7496
原创 GBASE之GROUP_CONCAT()函数
假如返回的最大长度是200 bytes,因为部门50的员工拼接起来会大于这个长度,所以这个值会被截断,并且以’;‘表明这个数据是被截断的,被截断的数量为’(23)’.假如我们有一个机构表,机构分为两个等级,我们希望找出每个一级机构下面的二级机构,那么使用此函数可以实现该操作。下述语句会在员工表中找出部门编号为30的员工,并且按照他们的雇佣日期和姓进行排序(默认是升序)列出各个部门的员工,并将这些员工按照他们的雇佣日期进行排序(默认为升序)这里指定了拼接的最大数量为2,那么最多只会拼接两个值。
2024-01-25 21:29:22
3789
原创 GBASE regexp_replace函数 与 db2 translate函数比较
官方示例:上述式子的意思为:对于字符串:‘Test literal’,使用o 替代 e,使用 m替代 l函数返回在字符串文字“Another test literal”中进行以下替换后生成的字符串:A 替换为 B,t 替换为 f,e 替换为 i 并且 r 替换为 m。当要替换的字符串 以及 用来替换的字符串不等长的时候,会自动忽略:函数将用*替代空格,使用+替代0,对前面的字符串进行替换,而对于其他的数字(123456789)则也会使用空格进行替换,
2024-01-15 20:21:01
1715
1
原创 (42000): (GBA-02SC-1001) Can‘t DO Merge when not able to build hash (redistribution) JOIN relation
对于临时表的数据类型是由数据库自己指定的。这种时候我们也无法指定分布键,因此,如果需要使用临时表进行merge操作的话,还是要使用第二种方式,建 表结构并且指定分布键。解决方法:我们可以给两个表添加一个公有字段(随便一个字段都可以,然后将这个字段设置为分布键,要保证这两个表的这个字段是一样的,这样就没有改变原来的关联条件了)这个时候on后面要包含a表的所有的分布键,但是对b表没有规定,on后面可以是分布键也可以不是。另外需要注意的是,我们不能对分布键字段进行更新,这样当我们在做更新的时候就可能出现问题。
2023-10-19 20:02:30
1857
原创 分布表与复制表
需要注意的是,分布表的设计需要考虑数据分布的均衡性、查询的路由和数据一致性等因素。在使用分布表时,开发人员需要根据具体的应用场景和业务需求进行合理的设计和配置。通过复制表,您可以创建一个与现有表具有相同结构和内容的副本,而无需手动重新创建表结构和插入数据。需要注意的是,复制表只复制表的结构和数据,而不包括触发器、存储过程、视图等其他与表相关的对象。如果需要复制这些对象,您需要另外的步骤或工具。它将数据按照特定的规则分散存储在不同的节点上,以实现数据的分布和并行处理,从而提高查询性能和系统的可扩展性。
2023-06-16 16:54:09
951
原创 CAST函数
这里就需要使用到cast函数,因为如果字段是不一样的数据类型是无法使用union的。最后将这些字段的最大长度的值拼接起来(UNION / UNION ALL)。CAST 函数可以将一种数据类型转换为另外一种数据类型。使用cast函数将所有的值都转换为字符串类型就可以了。然后查询这个字段的值(值的长度等于最大长度);首先需要找出这个字段的最大长度是什么;需要查出某张表中长度值最大的数据。
2023-06-14 11:23:44
635
原创 GABSE与DB2的编码格式问题
在GBASE中,比如对于varchar(5)字段名字A的字段,最多可以插入五个中文字符,插入五个中文字符之后length(A)=15。在DB2中,比如对于varchar(5)字段名字A的字段,最多可以插入两个中文字符,插入五个中文字符之后length(A)=4。这个语句在DB2里面是不可以使用的,要使用其他办法查到数据库的编码方式。在使用过程中发现中文字符在不同数据库中占用的字节的数量不一致。在GBASE中可以使用下述语句查看表的编码格式。这里查出来的GBASE的编码格式是UTF-8。
2023-06-14 10:07:54
816
原创 数据迁移中的常见问题
当满足条件的记录有多条,要对记录进ROW_NUMBER(),取number值作为一个ID,然后通过ID筛选出合适的记录。如果此时多条记录PARTITION BY的字段取值内容完全一致,并且order by的内容也一致(比如余额都是0的情况),那么这里的ID可能就是一个相对随机的数据,跟kettle里面处理出来的可能会存在不一致的情况,这就导致双方取数不一致,也就导致最终的结果是不一致的。可能的解决问题的办法:使用其他的完全能够使得排序一直的记录进行分组排序。运行过程中最常见的一个问题出在排序这里。
2023-06-14 09:18:19
575
原创 信用社历史相关
目前的趋势有两种,一种是部分有能力的省联社直接变成省级农商行,比如北京、重庆等等,最有特点的事黄河农商银行,是在原宁夏自治区联社和银川市联社金融业务合并的基础上,吸收国内若干家法人单位和自然人共同发起设立的股份制商业银行个,事全国售价由省级农村信用社整体改革而成的银行。省联社就像淘宝,县级联社就像是店家,淘宝为店家提供平台、服务,收取服务费用同事还提出各种管理要求,当然也是有不同之处,省联社可以对县级联社认识进行委任,而淘宝就不能更换店家的店长,当然淘宝对店家的支持也远没有省联社对县级联社的支持范围大。
2023-06-05 17:30:54
1058
原创 删除同名的存储过程
在项目中发现在一个schema下面存在同名的存储过程,具体的原因不太清楚(找了IBM官网,描述在下面),存储过程主要不同点在于参数不同,其中一个存储过程只有一个输入参数,另外一个存储过程包含一个输入参数还有一个输出参数。返回错误是因为存储过程被重载,因此该过程在该模式中不是唯一的。要删除过程,必须指定在CREATE procedure语句中指定的数据类型,或者使用下面示例中存储过程的特定名称。如果创建了多个具有相同名称但参数数量不同的存储过程,则认为该存储过程过载。如果直接drop的话,会报错。
2023-06-02 14:47:20
441
原创 MYSQL & DB2临时表
全局临时表的数据在所有会话结束后才会被清除。全局临时表:全局临时表的生命周期与数据库的生命周期相同,即全局临时表的定义会一直存在于数据库中,直到被删除或数据库关闭。会话临时表:会话临时表仅在创建它的会话中可见,其他会话无法访问该表,因此会话临时表适用于需要会话私有数据的场景。全局临时表:多个会话可以同时读取和修改全局临时表的数据,这使得全局临时表适合用于多个会话之间共享数据的场景。会话临时表:会话临时表的生命周期与创建它的会话的生命周期相同,即会话临时表的定义会在会话结束时自动被删除。
2023-05-29 16:33:47
4946
原创 日语文法PPT截图31-45
使用两个动词,前面使用动词的肯定,后面使用动词的否定,表示前后两个动作几乎同时发生,或者间隔很短的时间。如果动词时有意志的动词,就含有一种紧迫感,如果后面的动词不是有意志的动词,就没有这种紧迫感了。表示事实与所想的相反的情况,(不成比例)可以表示消极的不成比例,也可以表示积极的不成比例。这里表达的意思是我坐下还没坐下这一点点的时间,后面的事情就发生了,表达的事立即的意思。(因为是表示从不会到会这样一个状态的变化,所以使用了なる)ところ作为普通的名词,表示场所,可以表示具体的概念,也可以表示抽象的概念。
2023-05-22 22:47:20
1216
原创 存储过程中with as 语句查询结果给变量赋值
建立临时表,将select的结果放到临时表里面,然后再进行赋值(可能这个时候都不需要赋值了,直接使用select的结果就可以了)在oracle中,当with as语句的查询结果只有一个并且没有传入参数的时候可以对变量进行赋值。但是在DB2中,无论是有传参还是没有传参都无法执行。但是如果是需要传入参数的话,则不可执行;
2023-05-17 20:51:56
1231
原创 DB2行列转换
在上述示例中,COL1、COL2、COL3等表示要转换的列名。UNPIVOT操作将每个列的值转换为一对行,其中COL_NAME列包含原始列名,COL_VALUE列包含对应的值。在上述示例中,COL1、COL2、COL3等表示要转换的列名。每个UNION ALL子查询选择特定的列,并使用相应的列名作为COL_NAME,将值作为COL_VALUE。假设有一个名为YOUR_TABLE的表,只有一行数据,包含多个列。oracle的 listagg() WITHIN GROUP () 行转列函数的使用。
2023-05-17 20:42:11
2021
原创 BD2一些报错信息以及kettle插入更新组件
2、DB2的sql编辑器运行似乎有点不太好使,如果执行sql脚本容易报错的话,可以全选sql语句执行,或者选择中间的按钮在新的页面执行SQL语句。1、观察sql代码里面有多少个参数,以此来确定存储过程的参数的数量。总之,针对这个问题多尝试几个执行的button,大概率错不在你。更新组件与插入/更新组件的不同之处,更新组件只对数据进行更新。另外如果不考虑效率问题的话,也可以使用delete的方式。在存储过程中使用了truncate这种DDL。
2023-05-17 20:23:33
878
原创 DB2字符串类型转DATE
如果是直接使用TO_DATE的话,那么转换后的结果是TIMESTAMPA类型而不是DATE类型。如果我们希望传进入8为的日期字符串,得到10位的日期字符串的话,那么可以采用拼接的方式进行。如果要转成DATE类型的话,那么可以首先使用TIMESTAMP类型,然后取DATE。所以如果希望达到第一种转换的效果,还是采取先前提到的拼接的方式。这样得到的结果就是’2022-10-12’如果是这样的转换则是可以执行的。对于字符串格式的转换。
2023-05-17 20:20:47
3832
原创 日语文法PPT截图16-30
对于这种复文的话呢 会有“と”或其他的一些格助词来去提示它前面的一部分是被引用的一部分,而不是主句的一部分。一般是小一点的孩子,一般上小学之后就不会这么表达了,大人避免这种表达。“と”后面可以加“も”,变成“とも”;“が”后面不能加“も”,变成“がも”的形式。但是呢,用“て”表达的因果关系因果性不是很强烈。而用“と”呢,他就没有这样的意思在里面,と经常被用在一些说明书里面。“に”前面的部分不仅可以是真正存在的人 还可以是一种抽象的概念。“見る”和“聞く”都是有意志的行为,有意志的去看有意志的去听。
2023-05-12 23:12:27
566
原创 日语文法PPT截图1-15
副助词除了可以接在名词的后面之外,还可以接在动词或者动词某些形态的变化之后,甚至副助词还可以接在某些格助词的后面来去添加一定的含义。在很多情况下,副助词是可以直接删掉的,并不会影响句子的意义,但是加上副助词会让表达更加生动。补助动词失去了原本的含义,接在动词“て”形后面,和前面这个词共同构成句子的谓语。用“あげる”的话,这句话的主语是给予的一方,而宾语(间接宾语)呢,是接受的一方。用“くれる”主语变成了外面的人,而内部的人是放在宾语的位置上的,也就是说它在句子中是共同地表意,表达成分的,是不可分割的。
2023-05-12 13:20:06
666
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅