当前位置: 首页 > 面试经验 >

【前端校招面经】小米南京互联网业务部前端23校招一面面经

优质
小牛编辑
98浏览
2023-03-28

【前端校招面经】小米南京互联网业务部前端23校招一面面经


  • 自我介绍

  • 在你过往实习的项目中你遇到过哪些问题, 如何解决的

  • CSSposition属性有哪些值, 列举出来其各自的作用



static, relative, fixed, absoluate, sticky




  • 口述https原理

  • CSS 手写一个两栏布局

  • CSS 将页面元素隐藏的方式有哪些

  • 浏览器缓存原理

  • 手撕代码:


function mySetTimeout(func) {
// 实现该函数, 需要考虑用多种方式解决
}

// 使执行下述代码的输出结果为"1234"
console.log(1);
setTimeout(() => {
console.log(4);
});
mySetTimeout(() => {
console.log(3);
});
console.log(2);

参考答案:


// 方法一: 直接用 Promise
function mySetTimeout(func, ...args) {
const _this = this;
return Promise.resolve().then(() => {
func.call(_this, ...args);
});
}

// 方法二: 利用 async await
async function mySetTimeout(func, ...args) {
await 0;
func.call(this, ...args);
}


  • 手撕代码: 用TypeScript实现防抖/节流, 要求用 ts 的泛型机制控制防抖与节流函数的参数与返回值类型相同
    参考答案:


// 这里的 ts 泛型限制参考了 lodash
function throttle<T extends (...args: any[]) => any>(
fn: T,
delay?: number
): (...args: Parameters<T>) => ReturnType<T> | void {
let flag = true;

return function (...args) {
if (!flag) {
return;
}
flag = false;
setTimeout(() => {
fn(...args);
flag = true;
}, delay ?? 0);
};
}



  • 手撕代码: 给定一个乱序数组, 假设该数组中有一个元素的出现次数超过了数组长度的一半, 需找到这个元素, 要求时间复杂度为 O(n) 且空间复杂度为 O(1)

  • 手撕代码: 给定一个只包含 6 种括号字符的字符串, 检查其括号是否能够匹配


反问环节:



  • 部门原来在北京, 22 年开始大规模迁移到南京

  • 业务线涵盖 B/C 端, 主要包括游戏业务(C端), 面向商城的运营(B端)

  • 面试官自己评价说"本人涉及的工作内容没有什么技术难度"

  • "预计你来这里以后, 业务压力会比较大"

  • "去年做了好些同质化的业务", "技术在南京但产品团队在北京, 因此沟通上会有一些额外的压力"

  • 面试官提到这边的价值观: 与其质疑产品提出的需求的价值, 不如考虑自己如何提升和扩宽业务的价值

  • "这边的产品没有你想象当中那样专业, 因此需要技术去帮产品考虑业务赋能问题, 需要你主动提出一种模型然后和产品去介绍沟通"

#前端工程师精选面经合集##小米##前端#
 类似资料: