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

一道前端面试题:请求一个 github 用户的 follower,并且点击某个 follower,请求他的 follower,用 react 来写代码

  •  1
     
  •   ericgui · 2021-12-14 11:58:44 +08:00 · 2817 次点击
    这是一个创建于 862 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请求 follower 的 url : https://api.github.com/user/{username}/following

    你首先在 input 里输入任何一个用户名,比如axross,请求这个用户的 follower ,

    然后有很多 follower

    每个 follower 旁边应该有个 button ,点击一下,会请求这个 follower 的 follower

    每一级都要有缩进

    这个还把我难住了,我靠,这个 45 分钟内能写出来吗?

    第 1 条附言  ·  2021-12-14 12:38:00 +08:00
    刚才写出来了:

    https://github.com/medmin/github-followers-tree-view


    其实我写了递归,只是我当时一下子懵了,非要维持并更新一个超级大的 tree ,但刚才想明白了,这样没必要


    所以并没有写完,但我也拿到了下一轮面试,然而我已经拿到了其他公司 offer ,就拒了他们
    第 2 条附言  ·  2021-12-14 12:40:56 +08:00
    请求 follower 的 url : https://api.github.com/user/{username}/followers
    第 3 条附言  ·  2021-12-14 12:42:27 +08:00
    正确的 url:

    https://api.github.com/users/{username}/followers
    22 条回复    2021-12-15 01:59:01 +08:00
    kkocdko
        1
    kkocdko  
       2021-12-14 12:03:29 +08:00 via Android
    是不能用组件库么?
    ericgui
        2
    ericgui  
    OP
       2021-12-14 12:04:02 +08:00
    @kkocdko 手写
    Biwood
        3
    Biwood  
       2021-12-14 12:19:51 +08:00
    核心应该是写个递归组件,没有很难吧
    ch2
        4
    ch2  
       2021-12-14 12:20:27 +08:00
    treeView?
    DrakeXiang
        5
    DrakeXiang  
       2021-12-14 12:24:52 +08:00
    为啥这个 url 没用哇
    Mohanson
        6
    Mohanson  
       2021-12-14 12:29:42 +08:00
    不是用嵌套 <li> 的方式就能搞定么?
    shenqi
        7
    shenqi  
       2021-12-14 12:33:17 +08:00
    ,,,这不是很简单吗。。。
    看完题目就大概有思路了,45 分钟不考虑样式只考虑缩进,有啥难的?
    ericgui
        8
    ericgui  
    OP
       2021-12-14 12:35:15 +08:00
    @Biwood 是递归,我写出递归了,但当时面试的时候吧,没想明白,非得要构建一个大大的 tree ,但其实仅仅是这个要求的话,没必要构建一个大大的 tree

    刚才写出来了
    ericgui
        9
    ericgui  
    OP
       2021-12-14 12:36:07 +08:00
    @shenqi 我也知道递归,但当时一下子就懵了,非得要不断更新一个超级大的 tree ,但刚才研究了一下,实际上没必要。
    ericgui
        10
    ericgui  
    OP
       2021-12-14 12:39:07 +08:00
    @DrakeXiang 中间花括号里的 username 要替换为你要查找的用户的 username
    ericgui
        11
    ericgui  
    OP
       2021-12-14 12:41:08 +08:00
    @DrakeXiang 请求 follower 的 url : https://api.github.com/user/{username}/followers

    sorry
    shenqi
        12
    shenqi  
       2021-12-14 12:42:07 +08:00
    页面渲染角度没递归的说法,只是存储数据存成 children 而已。
    具体后面的 follower 还能点击 button 获取数据,那就是一层新的调用而已,不是递归,做好指针指向就行。
    ericgui
        13
    ericgui  
    OP
       2021-12-14 12:42:13 +08:00   ❤️ 1
    shenqi
        14
    shenqi  
       2021-12-14 12:44:48 +08:00
    渲染子集确实需要递归,想漏这个点了。
    vance123
        15
    vance123  
       2021-12-14 14:10:49 +08:00
    试着写了一个
    ```
    function FollowerTree({ username }) {
    const [followers, setFollowers] = useState([])
    async function fetchFollower() { ... }
    return (
    <div>
    {username} <button onClick={fetchFollower} />
    {followers.length > 0 &&
    <ul>
    {followers.map(
    name => <li>
    <FollowerTree username={name} key={name} />
    </li>
    )}
    </ul>
    }
    </div>
    )
    }
    ```
    wtf12138
        16
    wtf12138  
       2021-12-14 14:42:18 +08:00
    递归组件用 react ,vue 都很好实现,不用框架应该咋实现?
    ericgui
        17
    ericgui  
    OP
       2021-12-14 14:50:40 +08:00
    @wtf12138 看我上面给的 github 链接

    面试还是需要的手写的
    nznd
        18
    nznd  
       2021-12-14 17:44:19 +08:00   ❤️ 2
    想跑下代码 install 一看 1484 个包 至于吗...
    yikyo
        19
    yikyo  
       2021-12-14 23:08:38 +08:00 via iPhone
    组件 A 接受参数 username ,展示该 username 的 follower ,点击按钮请求数据,该数据映射成组件 A 的列表

    我没理解错题目吧
    yikyo
        20
    yikyo  
       2021-12-14 23:14:19 +08:00 via iPhone
    刚看到#15 的回答,跟我理解一样
    ericgui
        21
    ericgui  
    OP
       2021-12-15 01:58:05 +08:00
    @nznd nodejs 不就这鸟样嘛
    ericgui
        22
    ericgui  
    OP
       2021-12-15 01:59:01 +08:00
    @yikyo 你跑一下我的代码吧,试试吧,面试的时候有例子,但是一个视频,我这没法发视频
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5660 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:31 · PVG 11:31 · LAX 20:31 · JFK 23:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.