V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blueFat
V2EX  ›  求职

[杭州]1.5 年前端求坑位;技术画像:ts+react;业务画像:电商 SaaS 后台+小程序

  •  
  •   blueFat · 2023-03-24 15:14:35 +08:00 · 1901 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求一份前端开发的坑位~

    学历:20 届 二本非科班 履历:1.5 年电商平台 ISV(toB)前端开发,就打磨了 2 个项目,PC 和小程序的 SaaS 打单软件 定位:中高级。

    技术水平过关,求知欲良好。

    1. 熟悉常用的数据结构与算法。能读懂 Ts 类型编程,写一些业务中需要的基础泛型工具。基本的工程化能力。
    2. debug 过 react 源码,并能阅读和理解其机制。读过 Vue 的 MVVM ,虚拟 DOM ,模板语法的实现。

    业务理解力和沟通协作能力良好。

    1. 帮带过 3 个新人,完成 3 个 0~1 项目,2 个改造项目。
    2. 善于利用现有工具和平台优化工作流程。

    闲聊时刻

    试试看在 v2er 上有没有机会!有什么意见或者建议还请大家发言指导指导!

    有需要的求捞一下,留个邮箱给您发简历!

    16 条回复    2023-03-26 21:38:41 +08:00
    tangzui
        1
    tangzui  
       2023-03-24 18:57:29 +08:00
    妈呀。你们这都中高级了?
    1016
        2
    1016  
       2023-03-24 19:07:36 +08:00
    自己给自己定的级别吗?

    1.5 年 20 届 二本 还是非科班

    你这些技能最多算是个初级
    lzgshsj
        3
    lzgshsj  
       2023-03-24 19:12:08 +08:00
    v2 刚有个 2020 年工作但是 4 年经验,厂内定位 senior 的。现在又来个二本非科班 1.5 年的中高级。😂
    towave
        4
    towave  
       2023-03-24 19:15:33 +08:00 via Android
    职级越来越水了ᥬ😂᭄
    TaoLoading
        5
    TaoLoading  
       2023-03-24 20:29:39 +08:00
    只看你的这两点技术描述,定位中高级太夸张了
    jklopsdfw
        6
    jklopsdfw  
       2023-03-24 21:35:20 +08:00 via iPhone   ❤️ 1
    中高级的话,要不简单介绍一下 react api ?

    - 一般在什么场景用 useState ,什么场景用 useRef
    - useEffect 一般放什么逻辑,如何精确让 deps list 真实的反应业务逻辑,而不是莫名其妙加很多 state 到 deps list 。可以随便贴个日常写的比较复杂的 useEffect 吗
    - 为啥需要 useEffectEvent ,是补齐了什么场景(即 react 一直缺失了什么?)
    jklopsdfw
        7
    jklopsdfw  
       2023-03-24 21:43:12 +08:00 via iPhone
    问 api 的行为非常逗。不过 react 就是这么神奇,并不是所有中高级都能写对最基础的业务逻辑。
    houzhen
        8
    houzhen  
       2023-03-25 05:29:59 +08:00
    @jklopsdfw 你说的对
    nbhaohao
        9
    nbhaohao  
       2023-03-25 09:51:09 +08:00
    个人感觉如果对 React 和 Vue 的实现原理有一定理解的话, 如果 “中高级” 是 中级或高级的话, 我觉得也没啥问题啊 😂
    前端只要对框架理解够深, 工程化的东西熟悉, 日常工作其实就没什么太大问题了.
    当然更细的内容就面试考察呗.
    blueFat
        10
    blueFat  
    OP
       2023-03-25 19:00:47 +08:00
    @jklopsdfw 额-0-,因为在上家就是高级,不过是小厂是比较水的我知道。去年有面过阿里,问了下定位能给到中级的。
    blueFat
        11
    blueFat  
    OP
       2023-03-25 19:02:37 +08:00
    @nbhaohao 哈哈-0- 高级肯定是木的拉。没想到帖子这么多人回呢哈哈,这里还是活跃的
    blueFat
        12
    blueFat  
    OP
       2023-03-25 19:04:20 +08:00
    @towave 哈哈哈,见笑见笑拉。
    blueFat
        13
    blueFat  
    OP
       2023-03-25 19:06:14 +08:00
    @TaoLoading 是的,但是我知道这里是论坛,直接码很长的简历上去是没人看的,只能把我的情况描述一下。毕竟没有开源项目或者说是明星项目背书。
    blueFat
        14
    blueFat  
    OP
       2023-03-25 20:18:33 +08:00
    @jklopsdfw 简单回复一下,可能不是很对哈,多指教。

    1. useState 用在有状态组件,状态更新后 React 就会自上而下检索更新相关联的组件。
    useRef 用于保存 React 实例 或者是存储任何数据,他改变之后是不会触发组件渲染的,在组件生命周期内其保存的数据都不会改变,要手动赋值。

    2. useEffect 意味着副作用,当 deps list 中的 state 变更后会在渲染完成后执行。适合放一些在 state 变更需要自动触发的逻辑。要注意的就是,他的执行时机是在浏览器渲染完成之后,其他场景都可以。

    deps list 确实就是 react 现阶段的硬伤,依赖项很容易就特别多。让 deps list 真实的反应业务逻辑,做好状态的细粒度管理。
    1. 是组件按职责抽象拆分好,状态适当的聚合。
    2. 得当的命名。
    3. 写注释哈哈,有些 effect 中逻辑,的确就是要排除某个 state 的。
    4. useEffect 内部的回调函数,在封装时与状态无关的的善用 useRef 保存,与状态有关的善用 useCallback ,这样可以将 deps list 拆分到别的函数中。

    平时写的啊大部分是业务里的,不方便贴了,我贴一个倒计时组件的,相对通用点的。就是一个弹出层,打开必须等倒计时结束才能关闭。

    3. useEffectEvent 我其实没听过哈哈,不太懂是个啥。。望指教
    ```ts

    type PorpOptions = {
    afterClose?: () => void
    count?: number
    }

    type Props = PorpOptions & IModalProps<boolean>

    const ClearCacheTipWindow = ({ visible, hidden, afterClose, count = 3, ...props }: Props) => {
    const [countdown, setCountdown] = React.useState(count)
    const intervalRef = React.useRef<NodeJS.Timer>()

    useEffect(() => {
    if (visible) setCountdown(count)
    }, [count, visible])

    useEffect(() => {
    let canUpdate = true

    if (countdown !== 0) {
    intervalRef.current = setInterval(() => {
    if (count !== 0) {
    canUpdate && setCountdown(c => --c)
    }
    }, 1000)
    }

    return () => {
    canUpdate = false
    clearInterval(intervalRef.current)
    }
    }, [count, countdown])

    // 倒计时文本
    const remainCount = React.useMemo(() => {
    return countdown > 0 ? <>{countdown}s</> : null
    }, [countdown])

    // 可否点击以关闭弹层
    const disabled = React.useMemo(() => {
    return countdown !== 0
    }, [countdown])

    return (
    <Modal
    title='保存成功'
    afterClose={() => afterClose?.()}
    width={480}
    centered
    getContainer={false}
    closable={false}
    maskClosable={false}
    keyboard={false}
    visible={visible}
    onCancel={() => hidden(false)}
    footer={[
    <Button key='primary' disabled={disabled} onClick={() => hidden(true)} type='primary'>
    已完成上述操作{remainCount}
    </Button>
    ]}
    {...props}
    >
    <>巴拉巴拉的内容<>
    </Modal>
    )
    }


    ```
    blueFat
        15
    blueFat  
    OP
       2023-03-25 20:21:59 +08:00
    @lzgshsj 哈哈-0-见笑拉 ,应该是现在阶段在初中级,要努力去对标中高级!
    um1ng
        16
    um1ng  
       2023-03-26 21:38:41 +08:00
    那我岂不是专家了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.