1. 报表设计器核心功能
问题:请简述单元格公式与数据集公式的区别?
解答:单元格公式是在报表渲染时计算,适用于简单逻辑;数据集公式在数据查询阶段计算,适用于复杂的数据预处理。在帆软面试中,面试官常问如何优化大数据量报表,此时应强调使用数据集公式减少前端计算压力。
2. 参数传递机制
问题:如何实现报表间的参数传递?
解答:可以通过URL拼接参数(如?param1=value1)、使用JS事件触发参数回传,或利用表单控件的“跳转”功能传递参数。在FineReport中,参数面板的设计也是考察重点,需确保参数获取的准确性。
3. 决策报表与普通报表
问题:什么时候使用决策报表?
解答:决策报表适合大屏展示、移动端适配以及非表格类的自由布局场景。其特点是无分页、无表头,更适合现代数据可视化展示。在帆软面试案例题中,若要求做手机报表,首选决策报表。
1. 自助数据集与直接数据集
问题:两者有何区别?
解答:直接数据集直接连接数据库,SQL执行在数据库端;自助数据集在BI服务端进行数据处理,适用于多表关联、数据清洗等场景。在FineBI面试中,需根据数据量和处理复杂度推荐合适的数据集类型。
2. 仪表板交互
问题:如何实现组件间联动?
解答:通过设置“交互”功能,将一个组件设为触发器,另一个设为被触发器。可配置过滤、下钻、跳转等交互方式。面试官常考察如何处理多维度的联动过滤。
3. 计算字段
问题:如何在FineBI中创建计算字段?
解答:在数据集编辑中,使用公式编辑器创建。支持算术运算、逻辑判断、字符串处理等。高级考点包括使用“自定义SQL”进行复杂计算,以及在仪表板中使用“仪表板计算”进行跨数据集计算。
1. 窗口函数
问题:请解释 ROW_NUMBER(), RANK(), DENSE_RANK() 的区别。
解答:ROW_NUMBER() 生成唯一序号;RANK() 生成跳跃序号(同并列);DENSE_RANK() 生成连续序号(同并列)。这是帆软面试SQL部分的必考题,常用于解决“Top N”问题。
2. 索引优化
问题:如何判断索引是否失效?
解答:常见失效场景包括:对索引列进行函数运算、隐式类型转换、模糊查询前导通配符(%abc)等。在FineReport中,若报表加载慢,需检查底层SQL是否走了索引。
3. 多表连接
问题:INNER JOIN 与 LEFT JOIN 的区别?
解答:INNER JOIN 返回两表匹配的记录;LEFT JOIN 返回左表所有记录,右表不匹配则为NULL。在帆软面试中,需根据业务需求选择连接类型,例如统计所有部门员工时,需用LEFT JOIN以防无员工部门丢失。