【同花顺】2023春招前端【一面+二面+HR面】面经
一面
- 自我介绍, 讲实习项目
- 你在实习中的这些项目都是你自己做的吗? 有人带你吗?
- 你在实习中做的事情基本都是业界比较成熟的, 你在做的时候有参考哪些已有的成果?
- 你在实习中做的最有挑战的事情是什么? 你是怎么解决的?
- 你在实习过程中的最大收获
- 有没有了解 Vue? Vue 中父子组件传值
- 有没有了解手机端前端开发
cookie
,localStorage
,sessionStorage
的应用场景- 写一个 js 正则表达式, 实现对邮箱字符串的校验
/^[\w\.]+@\w+\.com$/
--> 反问环节
- base: hz
- 主要工作难点是 PC 端和手机端的金融数据可视化, 以及对金融数据的 3D 建模
- "工作节奏是 994, 周五可以早点下班"(重新定义 994)
- 每天上班打卡
二面
全程问我实习经历和过去项目做了什么, 而且是翻来覆去地重复问, 一个小时的时间内我已经说得块口干舌燥了, 他一句我十句的那种...
最后只问了一道经典的前端手撕代码题, 这道题在我 21 年 10 月面试字节北京国际化电商的时候也遇到过:
// 给定如下数据:
const items = [
{ id: 2, parentId: null },
{ id: 1, parentId: 2 },
{ id: 4, parentId: 1 },
{ id: 5, parentId: 1 },
{ id: 3, parentId: 2 },
{ id: 6, parentId: 3 }
];
创建出上述数据对应的树形结构, 这里给一个潦草的简易实现吧:
// 获取根节点
const getRootItem = items => {
const rootItem = items.find(({ parentId }) => parentId === null);
if (!rootItem) {
throw new Error('传入的数据中无根节点');
}
return rootItem;
}
// 获取每个节点对应其有哪些子节点的 Map 结构
const getChildrenMap = items => items.reduce((map, curItem) => {
const { parentId } = curItem;
if (map[parentId]) {
map[parentId].push(curItem);
} else {
map[parentId] = [curItem];
}
return map;
}, {});
function TreeNode({ id, parentId }, arr, childrenMap) {
this.id = id;
this.parentId = parentId;
this.children = childrenMap[id]?.map(i => new TreeNode(i, arr, childrenMap));
}
function createTree(arr) {
const childrenMap = getChildrenMap(arr);
const rootItem = getRootItem(arr);
return new TreeNode(rootItem, arr, childrenMap);
}
// 执行:
(function main() {
const tree = createTree(items);
console.log(JSON.stringify(tree));
})();
--> 反问环节
- 工作以 B 端为主
- 金融行业的业务, 对于数据准确度要求较高
- 弹性工作制, 对于上班时间不做要求(但我记得一面反馈说上下班要求打卡)
- 每天上班的"弹性底线"是上午 9:30 或者 10:00
- 公司要求每天下午 6:00 下班, "但是大家都会呆到晚上八九点"
HR 面
- 自我介绍
- 高考选专业的理由
- 考研选学校和专业的理由
- 对同花顺之前有了解吗
- 手里有几个 offer 了
- 个人信息:
- 父母是做什么的?
- 有 npy 吗
--> 反问环节
- 上午 9:00 上班, 上班打卡
- 有大小周, 单休双休循环
- 公司规定下班时间 17:30, 但研发部门一般是 20:00-21:00 下班
- 如果你前一天晚上加班太晚了, 第二天上午打卡可以晚一些, 但不能晚于 10:00
- 公司有不确定的末位淘汰比例
结果
#前端##同花顺##软件开发2023笔面经##前端工程师精选面经合集#挂了, 据说是因为我的要价超过他们预期