伯乐在线|初级开发者面试中的不合理问题
北京联盟_本文原题:初级开发者面试中的不合理问题
编译:伯乐在线/Ivyw
我有很多初出茅庐做开发的朋友 , 其中一位给我讲了他在应聘 Ruby 初级开发工程师时的事 。 下面就说说我和我的一个朋友是如何解决这个面试题的 , 两个高级工程师来解决这个初级工程师的面试题 , 显得有点大材小用 , 但结果令人出乎意外 。 在这个领域我还是有点见解的 , 我会详细描述一下我的解题思路 。
面试题
那个面试的朋友需要在 30 分钟内用 Java 实现一个链表 , 他的第一反应是小菜一碟 , 我也一样 。 即使是对没有 CS 学位的人来说 , 链表也是一种很通俗易懂的数据结构 。
链表是含有一串节点的链表 , 每个节点带有一个指向下一个节点的指针 , 这样你就大概能清楚它的工作过程了:插入节点时前后节点的信息和引用前后关系的指针都会发生改变;删除节点时移除这个节点和它的指针即可;查找节点时按顺序查看指针信息直到找到你需要的那个节点 。 如果你大学是 CS 专业的 , 那么这可能是你最初接触到的非嵌入式数据结构 。 链表的用处很大 , C 语言的标准库为接下来的编程工作提供了必要的支持 。
对初级开发人员来说这是一个很好的面试题 。 这个试题涉及了算法技巧 , 但没有 CS 专业学的那么深奥 。 其次 , 这也是非常切合实际的编程测试 , 因为工作后你肯定要写代码、调试、输出并运行代码 。 你不会被点名去白板上写点什么来展现自己的能力 , 这不是白板编程 。
本文插图
我很好奇 , 为什么那个朋友对这样的面试感到困扰 , 随后他说出了这道题目的附加条件:面试官希望这个链表能符合 List <T> 的特性 。 我立马被这道题的复杂性吓到了 , 完全不像一开始的毫不在意 。
救命
可能有人对 Java 标准库接口了解不多 , 所以让我来普及一下 List <T> 。 List <T> 是 Java 的泛型接口 , 可以用来实现包含很多相同数值的有序集合 。 这是一个功能强大的接口 , 提供我们可能会用到所有的定位列表数据类型 。 它有 25 个公共方法 , 其中两个方法返回另外的接口含有12 个公共方法 , 也就是说 , 你在实现过程中需要构建和测试 37 个公共方法 。 其中 t 意味着这是一个泛型接口 , 数据类型没有限制 。 这简直太荒谬了 , 而我的朋友仅有 30 分钟的时间来解答 。
那么 , 这个问题是否适合那些经验不足两年的新人呢?当然不适合 , 而且相当不合理 , 我就“严肃认真地分析下”(我可以好好施展一番了 , 我对自己还是很有信心的) 。 我可以很轻易地完成这项任务 , 毕竟我是一个“资深”的开发人员 , 我这半辈子都在和 Java 编程打交道 , 虽然对工具有些生疏 , 但领悟很强 。 只是我不值得为这个任务花费太长时间 。
然而这还不够 , 我们还要精益求精 。 Pair programming (结对编程)是我最喜欢的一种工作方式 , 可以协助我们更快地完成工作 。 你需要向同伴解释自己的思路 , 当你累了还可以得到同伴的帮助 。 所以 , 我找到 Stephen Best 来一起解决这个问题 。 前20分钟我们没有安装工具 , 而是做出问题草图、搭建测试环境等等 。 我们假装是在面试环境中解决这个问题 。
【伯乐在线|初级开发者面试中的不合理问题】很快我们就开始了 。 Stephen 曾和我一起工作了6个月 , 其中有三分之一的时间都是这种模式 。 我们使用 TDD 工作流程协同工作 。
首先我们用 Eclipse 自动生成完整的界面框架 , 然后准备开始实施了 。 不幸的是 , 我们没有意识到这个任务的艰巨程度 。
这个过程的艰难险阻 , 简直难以形容 。 List <T> 接口有个好处 , 你可以在一些方法之上实现另外一些方法 , 但 List <T> 接口的复杂度太高 。 大约 6 小时后 , 我们放弃了 , 我们失败了 。 我们非但没能在 30 分钟内完成实施 , 我们根本没法解决这个问题 。
推荐阅读
- 陈展鹏|45岁港星直播卑微求职,引15万人在线观看,称为生存想来内地工作
- 属牛|惊喜接二连三出现,生肖牛在2022年1月底遇到伯乐,逆袭职场
- 衬衫|1月17号,生肖鸡迎来职场转折点,遇到领导这位伯乐事业顺风顺水
- |湘乡市“春风行动”拉开序幕
- 经济师|真题分享:初级经济师之经济基础知识
- 董明珠|职场中的人都渴望“伯乐”,但提升自身能力更重要
- 新东方在线|《当幸福来敲门》克里斯是如何重回正轨?看看他都做了什么
- 度夏|多肉星爆法师一年四季颜值在线,夏天不用操心也能轻松度夏
- 会计师|算一算!2022年假如拿下初级会计师证,你的工资能涨多少呢
- 新东方在线|福建省环境设计专业专场招聘会成功举办
