Skip to content

Commit 3ed41c8

Browse files
committed
Update react interview notes
1 parent 4f6ea81 commit 3ed41c8

File tree

3 files changed

+71
-37
lines changed

3 files changed

+71
-37
lines changed

apps/web-cn/assets/Slack Clone 1.png

-421 KB
Binary file not shown.
980 KB
Loading

apps/web-cn/pages/careers/interviews/react.tsx

+71-37
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import Image from 'next/image'
22
import { useRouter } from 'next/router'
33
import { NextSeo } from 'next-seo'
4+
import { useMemo } from 'react'
45
import { ReactColorIcon } from 'ui'
56

67
import Benefits from '~/components/careers/Benefits'
78
import { EngineerHiringProcess } from '~/components/careers/HiringProcess'
89
import { useCareersLayoutConfig } from '~/components/layouts/CareersLayout'
910

10-
import SlackCloneImage from '~/assets/Slack Clone 1.png'
11+
import ExampleImage from '~/assets/react-interview-example.png'
1112

1213
export default function ReactInterviewPageInChina() {
1314
const { query } = useRouter()
@@ -19,6 +20,14 @@ export default function ReactInterviewPageInChina() {
1920
title,
2021
})
2122

23+
const branchName = useMemo(
24+
() =>
25+
`interview/${new Date().getMonth() + 1}-${new Date().getDate()}${
26+
candidate ? '_' + candidate : ''
27+
}`,
28+
[candidate]
29+
)
30+
2231
return (
2332
<>
2433
<NextSeo title={title} />
@@ -31,74 +40,99 @@ export default function ReactInterviewPageInChina() {
3140
{isRemote ? (
3241
<>
3342
<h2>准备事项</h2>
34-
<p>首先你可以从以下两种方案中选择一条:</p>
3543
<ol>
3644
<li>
37-
使用我们提供的在线IDE环境,在线编辑代码,并<b>在线</b>提交代码;
45+
在本地克隆我们的{' '}
46+
<a href="https://github.com/zolplay-cn/react-interview">
47+
GitHub仓库
48+
</a>
3849
<blockquote>
39-
在线Replit IDE:
40-
<a
41-
href="https://replit.com/join/rkfkrflilu-zolplay"
42-
target="_blank"
43-
rel="noreferrer"
44-
>
45-
加入链接
46-
</a>
50+
<code>
51+
git clone https://github.com/zolplay-cn/react-interview.git
52+
</code>
4753
</blockquote>
54+
4855
</li>
4956
<li>
50-
使用自己的电脑环境与代码编辑器,分享屏幕,并在<b>本地</b>
51-
提交代码;
52-
<blockquote>
53-
在本地建立一个Git仓库,并新建一个React项目(脚手架自选)
54-
</blockquote>
57+
基于 <code>main</code> 分支,创建一个新的分支名叫{' '}
58+
<code>{branchName}</code>,并切换到该分支;
59+
</li>
60+
<li>使用你喜爱的代码编辑器/IDE打开文件夹项目;</li>
61+
<li>在文件夹项目根目录下,使用pnpm安装依赖(或npm/yarn);</li>
62+
<li>
63+
运行 <code>pnpm/npm/yarn run dev</code> 命令,启动项目
5564
</li>
5665
</ol>
5766
</>
5867
) : (
5968
<>
6069
<h2>准备事项</h2>
61-
<p>
62-
首先你需要在项目文件目录中开启一个新的Git分支,起名叫做{' '}
63-
<code>
64-
interview/
65-
{`${new Date().getMonth() + 1}-${new Date().getDate()}${
66-
candidate ? '_' + candidate : ''
67-
}`}
68-
</code>
69-
</p>
70+
<ol>
71+
<li>
72+
在项目目录中开启一个新的Git分支名为 <code>{branchName}</code>
73+
,并切换到该分支;
74+
</li>
75+
<li>
76+
运行 <code>pnpm dev</code> 命令,启动项目;
77+
</li>
78+
</ol>
7079
</>
7180
)}
7281

73-
<h2>面试测试题流程</h2>
82+
<h2>面试测试题要求</h2>
7483

75-
<p>现在有一个设计稿UI图如下:</p>
84+
<p>
85+
我们为你准备了一个类似Spotlight的搜索器界面,可以先查阅现有的项目代码并熟悉一下项目的结构。
86+
</p>
7687

7788
<section className="-mx-[10vw] rounded-2xl border-2 border-sky-300/20 shadow-2xl shadow-indigo-500/20">
7889
<Image
79-
src={SlackCloneImage}
90+
src={ExampleImage}
8091
placeholder="blur"
81-
alt="Slack Clone"
92+
alt="Example"
8293
className="rounded-2xl"
8394
layout="responsive"
8495
/>
8596
</section>
8697

87-
<p>请使用React Hooks形式的函数组件来实现界面布局,并最大程度上地还原UI</p>
88-
<p>(不限制任何框架、第三方库的使用)</p>
98+
<p>熟悉完之后我们就可以投入到测试题开发当中,你需要完成以下几个要求:</p>
99+
100+
<ul>
101+
<li>
102+
当搜索输入框的值发生改变的时候,应该触发一个搜索请求,请求的URL为
103+
<code>/api/search?q=QUERY</code>
104+
</li>
105+
<li>
106+
将返回的搜索结果替换在列表中显示,并传真实数据到{' '}
107+
<code>&lt;RepositoryOption /&gt;</code>
108+
组件中,并对该组件进行封装能够动态渲染仓库信息;
109+
</li>
110+
<li>
111+
当搜索结果为空时,应该显示一个提示信息,提示信息的内容为:
112+
<code>暂无 QUERY 的相关仓库信息</code>
113+
</li>
114+
<li>
115+
确保每次发出的搜索请求间隔 <b>大于等于500ms</b>
116+
</li>
117+
</ul>
89118

90119
<h2>加分项</h2>
91-
<p>下列加分项并非必须,但是可以为你的题目完成增加一些额外的分数</p>
120+
<p>在时间允许的前提下,可以选择性完成任意一个/多个加分任务</p>
92121
<ul>
122+
<li>优化搜索结果的渲染,使其可以更加高效的渲染,提高用户体验;</li>
123+
<li>给UI添加动画效果,增加用户体验;</li>
93124
<li>
94-
Semantic 语义化的 HTML5 标签使用,而不是滥用{' '}
95-
<code>&lt;div /&gt;</code>
125+
当选中仓库信息的时候,应该在浏览器中打开仓库的链接,并且查看仓库的详细信息。
126+
</li>
127+
<li>
128+
增加一个搜索历史记录,用户可以在搜索框中输入关键字,并且可以查看历史记录。
96129
</li>
97-
<li>添加合理的交互动画,让UI更加生动;</li>
98-
<li>组件化代码,让代码更加简洁;</li>
99-
<li>使用TypeScript完成代码;</li>
100130
</ul>
101131

132+
<br />
133+
<p>======= 分割线 =======</p>
134+
<br />
135+
102136
<h2>福利待遇</h2>
103137
<Benefits />
104138

0 commit comments

Comments
 (0)