2,2024年最新秋招面试会问什么问题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

btns: [

{

title: ‘查询’,

onClick: () => console.log(‘查询’),

},

{

title: ‘重置’,

onClick: () => console.log(‘重置’),

},

],

}}

)

}

}

HOC-⾼阶组件

为了提⾼组件复⽤率,可测试性,就要保证组件功能单⼀性;但是若要满⾜复杂需求就要扩展功能单⼀的组件,在React⾥就有了HOC(Higher-Order Components)的概念,定义:⾼阶组件是⼀个⼯⼚函数,它接收⼀个组件并返回另⼀个组件

HOC-基本使⽤

HocPage.js

import React from ‘react’

function Child(props) {

return

Child

}

const foo = (Cmp) => (props) => {

return <Cmp {…props} />

}

/*const foo = (Cmp) => {

return (props) => {

return <Cmp {…props} />

}

}*/

export default function HocPage(props) {

const Foo = foo(Child)

return (

HocPage

)

}

/pages/User.js【运⽤hoc改写前⾯的Context例⼦】

import React from ‘react’

import { Consumer } from ‘…/AppContext’

import Layout from ‘./Layout’

const handleConsumer = (Cmp) => (props) => {

return {(ctx) => <Cmp {…props}>}

}

export default function User(props) {

const HandleConsumer = handleConsumer(UserCmp)

return (

)

}

function UserCmp(props) {

console.log(‘user’, props)

return

User

}

HOC-链式调⽤

import React from ‘react’

function Child(props) {

return

Child

}

const foo = (Cmp) => (props) => {

return (

<Cmp {…props} />

)

}

const foo2 = (Cmp) => (props) => {

return (

<Cmp {…props} />

)

}

export default function HocPage() {

const Foo = foo2(foo(Child))

return (

HocPage

)

}

HOC-装饰器写法

⾼阶组件本身是对装饰器模式的应⽤,⾃然可以利⽤ES7中出现的装饰器语法来更优雅的书写代码。 CRA项⽬中默认不⽀持js代码使⽤装饰器语法,可修改后缀名为tsx则可以直接⽀持

// 装饰器只能⽤在class上

// 执⾏顺序从下往上

@withLog

@withContent

class Lesson2 extends React.Component {

render() {

return (

{this.props.stage} - {this.props.title}

)

}

}

export default function HocTest() {

// 这⾥使⽤Lesson2

return (

{[0, 0, 0].map((item, idx) => (

))}

)

}

Hooks

Hook是React16.8⼀个新增项,它可以让你在不编写 class 的情况下使⽤ state 以及其他的 React 特性。

Hooks的特点:

  • 使你在⽆需修改组件结构的情况下复⽤状态逻辑

  • 可将组件中相互关联的部分拆分成更⼩的函数,复杂组件将变得

  • 更容易理解

  • 更简洁、更易理解的代码

State Hook-状态钩⼦

创建HookPage.js

import React, { useState, useEffect } from ‘react’

export default function HookPage() {

const [date, setDate] = useState(new Date())

useEffect(() => {

const timerId = setInterval(() => {

setDate(new Date())

}, 1000)

return () => clearInterval(timerId)

})

return (

Home ⻚⾯

{date.toLocaleTimeString()}

)

}

更新函数类似setState,但它不会整合新旧状态

声明多个状态变量

import React, { useState, useEffect } from ‘react’

export default function HookPage() {

const [date, setDate] = useState(new Date())

const [fruits, setFruits] = useState([‘apple’, ‘banana’, ‘berry’])

useEffect(() => {

const timerId = setInterval(() => {

setDate(new Date())

}, 1000)

return () => clearInterval(timerId)

})

const del = (delIndex) => {

const tem = […fruits]

tem.splice(delIndex, 1)

setFruits(tem)

}

return (

Home ⻚⾯

{date.toLocaleTimeString()}

)

}

function FruitList({ fruits, onSetFruits }) {

return (

<>

点击下⾯⽔果删除当前

    {fruits.map((item, index) => {

    return (

    key={‘fruit’ + index}

    onClick={() => onSetFruits(index)}

    {item}

    )

    })}

    </>

    )

    }

    ⽤户输⼊处理

    import React, { useState, useEffect } from ‘react’

    export default function HookPage() {

    const [date, setDate] = useState(new Date())

    const [fruits, setFruits] = useState([‘apple’, ‘banana’, ‘berry’])

    useEffect(() => {

    const timerId = setInterval(() => {

    setDate(new Date())

    }, 1000)

    return () => clearInterval(timerId)

    }) //副作⽤ , [date]);

    const del = (delIndex) => {

    const tem = […fruits]

    tem.splice(delIndex, 1)

    setFruits(tem)

    }

    return (

    Home ⻚⾯

    {date.toLocaleTimeString()}

    <FruitAdd onAdd={(item) => setFruits([…fruits, item])} />

    )

    }

    function FruitList({ fruits, onSetFruits }) {

    return (

    <>

    点击下⾯⽔果删除当前

      {fruits.map((item, index) => {

      return (

      key={‘fruit’ + index}

      onClick={() => onSetFruits(index)}

      {item}

      )

      })}

      </>

      )

      }

      function FruitAdd(props) {

      const [name, setName] = useState(‘’)

      return (

      增加⽔果

      <input

      type=“text”

      value={name}

      onChange={(e) => setName(e.target.value)}

      />

      <button onClick={() => props.onAdd(name)}>add

      )

      }

      Effect Hook-副作⽤钩⼦

      useEffect:给函数组件增加了执⾏副作⽤操作的能⼒。

      副作⽤(Side Effffect):是指⼀个 function 做了和本身运算返回值⽆关的事,⽐如:修改了全局变量、修改了传⼊的参数、甚⾄是console.log(),所以 ajax 操作,修改 dom 都是算作副作⽤。

      异步数据获取,更新HooksTest.js

      import { useEffect } from ‘react’

      useEffect(() => {

      setTimeout(() => {

      setFruits([‘⾹蕉’, ‘⻄⽠’])

      }, 1000)

      })

      测试会发现副作⽤操作会被频繁调⽤

      设置依赖

      // 设置空数组意为没有依赖,则副作⽤操作仅执⾏⼀次

      useEffect(()=>{…}, [])

      如果副作⽤操作对某状态有依赖,务必添加依赖选项

      useEffect(() => {

      document.title = fruit

      }, [fruit])

      清除⼯作:有⼀些副作⽤是需要清除的,清除⼯作⾮常重要的,可以防⽌引起内存泄露

      useEffect(() => {

      const timer = setInterval(() => {

      console.log(‘msg’)

      }, 1000)

      return function () {

      clearInterval(timer)

      }

      }, [])

      组件卸载后会执⾏返回的清理函数

      Hooks之useReducer

      useReducer:useReducer是useState的可选项,常⽤于组件有复杂状态逻辑时,类似于redux中reducer概念。

      商品列表状态维护

      import React, { useReducer, useEffect } from ‘react’

      import { FruitList, FruitAdd } from ‘./Fruit’

      function fruitReducer(state, action) {

      switch (action.type) {

      case ‘init’:

      case ‘replace’:

      return action.payload

      case ‘add’:

      return […state, action.payload]

      default:

      return state

      }

      }

      export default function HookReducer() {

      const [fruits, dispatch] = useReducer(fruitReducer, [])

      useEffect(() => {

      setTimeout(() => {

      dispatch({ type: ‘init’, payload: [‘apple’, ‘banana’] })

      }, 1000)

      }, [])

      return (

      User ⻚⾯

      <FruitAdd

      onAdd={(item) => dispatch({ type: ‘add’, payload: item })}

      />

      <FruitList

      fruits={fruits}

      onSetFruits={(cur) =>

      dispatch({ type: ‘replace’, payload: cur })

      }

      />

      )

      }

      Fruit.js

      import React, { useState } from ‘react’

      export function FruitList({ fruits, onSetFruits }) {

      const delCur = (delIndex) => {

      const tem = […fruits]

      tem.splice(delIndex, 1)

      onSetFruits(tem)

      }

      return (

      <>

      点击下⾯⽔果删除当前

        {fruits.map((item, index) => {

        return (

        {item}

        )

        })}

        </>

        )

        }

        export function FruitAdd(props) {

        const [name, setName] = useState(‘’)

        return (

        增加⽔果

        <input

        type=“text”

        value={name}

        onChange={(e) => setName(e.target.value)}

        />

        <button onClick={() => props.onAdd(name)}>add

        )

        }

        Hooks之useContext

        useContext⽤于在快速在函数组件中导⼊上下⽂

        import React, { useContext } from ‘react’

        const Context = React.createContext()

        const Provider = Context.Provider

        export default function HookContext() {

        const store = {

        userName: ‘xiaoming’,

        }

        return (

        HookContext ⻚⾯

        )

        }

        function Child(props) {

        const { userName } = useContext(Context)

        return (

        Child

        userName: {userName}

        )

        }

        Hook相关拓展

        第三⽅库

        // antd-pro安装:

        yarn create umi

        // 选择 ant-design-pro

        npm install

        npm start

        React组件化大纲

        • 课堂⽬标

        • 知识要点

        • 资源

        • 起步

        • 快速开始

        • 组件跨层级通信 - Context

        • 使⽤Context

        • 组件复合-Composition

        • 基本使⽤

        • ⾼阶组件-HOC

        • 基本使⽤

        • 链式调⽤

        • 装饰器写法

        最后

        前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档

        网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

        需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
        img

        一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
        {

        const { userName } = useContext(Context)

        return (

        Child

        userName: {userName}

        )

        }

        Hook相关拓展

        第三⽅库

        // antd-pro安装:

        yarn create umi

        // 选择 ant-design-pro

        npm install

        npm start

        React组件化大纲

        • 课堂⽬标

        • 知识要点

        • 资源

        • 起步

        • 快速开始

        • 组件跨层级通信 - Context

        • 使⽤Context

        • 组件复合-Composition

        • 基本使⽤

        • ⾼阶组件-HOC

        • 基本使⽤

        • 链式调⽤

        • 装饰器写法

        最后

        前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档

        [外链图片转存中…(img-fNIh2z9h-1713276555820)]

        [外链图片转存中…(img-MLgDRyYa-1713276555820)]

        网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

        需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
        [外链图片转存中…(img-sAZyJh8R-1713276555821)]

        一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

        • 5
          点赞
        • 9
          收藏
          觉得还不错? 一键收藏
        • 0
          评论

        “相关推荐”对你有帮助么?

        • 非常没帮助
        • 没帮助
        • 一般
        • 有帮助
        • 非常有帮助
        提交
        评论
        添加红包

        请填写红包祝福语或标题

        红包个数最小为10个

        红包金额最低5元

        当前余额3.43前往充值 >
        需支付:10.00
        成就一亿技术人!
        领取后你会自动成为博主和红包主的粉丝 规则
        hope_wisdom
        发出的红包
        实付
        使用余额支付
        点击重新获取
        扫码支付
        钱包余额 0

        抵扣说明:

        1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
        2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

        余额充值