我真的遇到了这种公司...

2017-08-23 16:53:25 +08:00
 uuweZhou

###背景就是我投简历过去,然后收到了回复,如下:

###我复制一个文本在下面:

首先非常抱歉没能及时回复您的邮件,我们有一些紧急的事情耽误了。为了更全面考察候选人的能力,我们设计了一套贴近实际项目的题目,如果可以的话,请您完成之后把结果按照要求回复给我;如果您不认同这种方式或者有其它原因的话,也请您告知一下我们。题目如下:

附件中是一个带本地 git 仓库的项目,虽然是一个 demo,但是在此我们理解为实际的 Rest Api 服务。在开发协作的过程中遇到了如下的问题需要对这个服务进行多次升级:

  1. 开发对接过程中,前后端发现需要对接口传递的时间格式进行统一,讨论的结果是在这个项目中,不管是接口的输入还是输出凡是涉及到日期时间的地方,都采用 ISO 8601 compliant (例如 2010-01-01T12:00:00Z )的格式进行传递。于是你考虑用一种比较优雅的并且方便后期所有服务端开发同学的方式去实现,甚至都不去改动现有的接口实现( demo 中的/now
  2. 产品需要增加一个新的需求,提供一个无需登录的建议意见提交接口,需要用户提交的数据包括:姓名、电话、类型(意见或者建议)、内容,并且从数据统计来看,需要统计访问接口的来源,可能是不同的页面地址(可以跨域)通过接口提交的,也需要通过接口的 Cookie 追踪以及用户的真实 IP 来进行数据分析;从安全性角度来讲,为了避免恶意数据提交,产品提出我们假设相同 IP 或者相同 Cookie 都视为同一个用户,同一个用户一分钟之内只能提交一次(实际情况可能是可疑情况要求验证码,但是这个 demo 中不太好实现)。因此,除了用户输入的字段,你还要记录下调用接口的页面地址、用户的 Cookie、用户的 IP 地址、通过 IP 地址获取到的省和市。同时,运维同学表示,部署的实际环境中可能有多层的反向代理或者网关,这些反向代理都会按照标准反向代理的方式去传递 HTTP 头信息。为了实现这个需求,你需要引入数据库表设计并进行数据库版本管理、在项目中配置和使用数据库连接并且设计好接口最终可以提供给前端调用。
  3. 项目进行过程中,前端同学觉得这样不行,后端需要提供一个接口文档。后端同学进行了调研并且讨论,觉得手动写文档并且每次变动都去更新太麻烦了,需要一个自动生成的方案,并且最终决定用 swagger-ui。你需要引入 swagger-ui,完成现有接口的文档,并且把文档的书写和使用方式反馈给整个团队。
  4. 项目中并没有写任何的日志,运维同学反应,其实上线之后都会有日志收集系统,虽然线上不能直接 debug,但是出问题的时候可以通过日志查询来定位到问题。后端小伙伴们进行了一次讨论,觉得很有必要做这个事情,于是需要你给出一份书写日志的注意事项,并且按照这个规则给当前项目完善日志输出。
  5. 为了提高质量,减少返工次数,团队决定必须有基本的测试,包括接口测试和业务逻辑测试,于是你开始在项目中增加单元测试的框架,实现现有代码的基本测试用例,并且告诉团队其他人在后续开发中怎样使用这个测试框架,往后的开发流程会做哪些优化。

题目存在不合理的地方请谅解,请按照你觉得最好的方式完成上述的迭代工作,最终需要的是一份基于 demo 的、已经提交过 commits (不需要 push )的 git 代码库压缩包,若干你觉得有必要的文档,以及其他你认为有必要反馈给我们的信息。我们收到了不少优秀的简历,但是因为远程团队的特殊性,我们会根据整个过程中的细节进行探讨和评分,因此尽可能考虑全面,最终选择最合适我们团队的候选人。

多谢!

10006 次点击
所在节点    职场话题
85 条回复
murmur
2017-08-23 19:04:27 +08:00
@zhouwei520 这种面试如果是说思路没任何问题

但是如果是线下面试要求完整 git 提交 很明显过分了
jadetang
2017-08-23 19:05:52 +08:00
我觉得这个公司是我想加入的公司,因为确实这些问题都是工作中会碰到的问题。要不楼主把招聘信息发给我,我去试试。
murmur
2017-08-23 19:10:17 +08:00
@zhouwei520 我举个例子

为了实现这个需求,你需要引入数据库表设计并进行数据库版本管理、在项目中配置和使用数据库连接并且设计好接口最终可以提供给前端调用。

这第二点到前面说的都很套路,收集意见、防刷、反向代理,但是到后面画风一转就不对了,这句话跟前面有关系么

如果是数据表版本管理,分布式的比如 OA 了,也情有可原,比如两家公司都做仓库管理,但是各家仓库字段不一样,动态表,也一半套路

但是最后一点,设计好接口最终可以提供给前端.....调用? EXO ME ?!难道最终 API 是 query?table=table1 或者 query?table=table2


这一大堆东西全做 demo 能实现一个很大的功能点了好么。。。又不是 mongo 数据库,如果是 mysql 这种做动态表可真够吃一锅的
LINAICAI
2017-08-23 19:16:35 +08:00
这是需求啊,哪是面试题。
murmur
2017-08-23 19:21:38 +08:00
@gamexg 划重点“项目中并没有写任何的日志”

远程团队 没有任何的日志 100 分满分你给几分
newkedison
2017-08-23 19:31:12 +08:00
个人觉得题目没毛病,很显然,作为一个远程开发团队,题目里面提到的技术都是基础中的基础,如果连这些技术都没有,还需要“面向面试编程”,这个团队早就解散了,还需要招人吗?
jingniao
2017-08-23 19:38:34 +08:00
不能完全确认,这到底是一道非常考验实际工作能力的线下面试题还是只是骗代码节省成本的
现有条件下个人认为 6 成可能是骗代码的,可以的话将邮件中的代码附件共享出来进行分析,可能可以更加确认某个方向。
不过从楼主的态度来看,放出附件的可能性不大……
whileFalse
2017-08-23 19:46:13 +08:00
结合对方公司实力吧。邮件的表述和思路都非常清晰。能出这么道题的人,自身实力也不弱。我个人还是觉得对方不是为了骗代码。
v2orz
2017-08-23 19:48:43 +08:00
要你写一部分看看你能力的话,我觉得还行,都是全面考察你能力,挺好的
要你全部完成的话,还是玩蛋去吧
hisway
2017-08-23 19:56:08 +08:00
题目挺好的,毕竟他要招的就是要会这些的人,但这个全部下来得花费很多时间。如果可以选择其中一个来写,好好做,加上公司过得去还是值得的。
wdlth
2017-08-23 20:35:11 +08:00
回答,你们公司还有人么?
wdlth
2017-08-23 20:55:13 +08:00
https://www.v2ex.com/t/379832
从邮件的地址看,貌似是这个
thomaspaine
2017-08-23 21:31:12 +08:00
从 0 开始写的话太费时间了……
fenixan2010
2017-08-23 21:44:06 +08:00
其实把一些关键点回答清楚,象征性地填充部分代码提交就可以吧。

一定是要完整实现这些需求的话确实太强人所难了。
kumitom
2017-08-23 21:48:15 +08:00
@jlsk 你的信息掌握在人家手里,这么搞可能会很亏
ll0jj0xx0
2017-08-24 05:21:09 +08:00
邮件写的很好啊,这么认真出题的人明显懂怎么实现啊,不可能是骗代码的。是个认真对待面试的公司。
eyp82
2017-08-24 07:47:49 +08:00
说句老实话, 我喜欢这样的面试, 比出算法题的不知道高到哪里去了.
knight322
2017-08-24 08:03:46 +08:00
@wdlth 火眼金睛
Kilerd
2017-08-24 08:11:26 +08:00
@wdlth 这就有点厉害了
wangxn
2017-08-24 08:51:39 +08:00
骗代码无疑。考察能力哪有这么详细的,这根本是生产用的东西了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385222

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX