Skip to content

小米暑期一面

问答环节

  1. 自我介绍并讲一下为什么选择前端。
  2. 如果我完全不懂低代码,如何向我介绍你的低代码项目?
  3. 低代码是怎么修改你的 JSON Schema 的?
  4. TS 中 any 和 unknown 的区别?
  5. 为什么你的断言不直接用 as any,而是通过 unknown 进行中间转换?
  6. 讲一讲函数作用域、全局作用域、静态作用域和动态作用域。
  7. 使用 useEffect 过程中有没有遇到过 ESlint 报错缺少依赖项的警告?
  8. 感觉你把 React 中 useEffect 和 Vue 中的 watch 的作用认为是类似的。
  9. 「反问」对前端学习有什么建议?

代码题

  1. 判断下列两段代码各自输出什么?

    1.js
    js
    function main() {
      {
        var a = 1;
        const b = 2;
      }
      console.log(a);
      console.log(b);
    }
    
    main();
    console.log(a);
    2.js
    js
    const text = "Hello";
    function printText() {
      console.log(text);
    }
    
    function main() {
      const text = "World";
      printText();
      console.log(text);
    }
    
    main();
  2. 下面四段代码各自输出什么?

    3.js
    js
    for (var i = 0; i < 5; i++) {
      setTimeout(() => {
        console.log(i);
      }, 1000);
    }
    
    for (var i = 0; i < 5; i++) {
      function print(i) {
        setTimeout(() => {
          console.log(i);
        }, 1000);
      }
      print(i);
    }
    
    for (var i = 0; i < 5; i++) {
      function printText() {
        var temp = i;
        setTimeout(() => {
          console.log(temp);
        }, 100);
      }
      printText();
    }
    
    for (var i = 0; i < 5; i++) {
      function printText() {
        setTimeout(() => {
          var temp = i;
          console.log(temp);
        }, 100);
      }
      printText();
    }
  3. 点击按钮后会发生什么?

    4.jsx
    jsx
    import { useState } from "react";
    
    export default function App() {
      const [count, setCount] = useState(0);
    
      console.log("render", count);
    
      const handleClick = () => {
        setCount((prevCount) => prevCount + 1);
        setTimeout(() => {
          console.log("setTimeout", count);
        }, 1000);
      };
    
      return (
        <div>
          <h1>{count}</h1>
          <button onClick={handleClick}>+1</button>
        </div>
      );
    }
  4. 手撕有序数组的平方