不少程序员都会碰到的三个面试题

对于算法面试问题是否有效一直饱受争议。然而,代码编写问题有时候能够很好筛选人才。在我们的例子中:

 

 

  • 这些问题是 “CS101” 水平的;
  • 我们相信一个优秀的开发者需要能够做出好的决定,并且这种好的决定是基于对有多少个复杂系统在交互的深刻理解上。如果一个开发者不能反转一个字符串,那么他们又怎么可能理解大型客户端面临软件的性能含义?

 

 

诚然,参与我们 CS02 课程的中学生都很聪明(其中一个还是美国计算机奥林匹克对队员)。然而,在对大型软件公司(如微软、亚马逊、谷歌等)的多年采访后,我们发现专业的开发者们并没有比我们的职业顾问人员牛多少。

 

 

 

问题如下:

 

 

1. 求从 10 100 中能被 3 5 整除的数的和

int sum = 0;

for(int i = 10; i <= 100; i++) if( i % 3 == 0 || i % 5 == 0) sum += i;

System.out.println(sum);

 

 

2. 将一个字符串逆序,不要使用反转函数

String message = "he saw a racecar";

StringBuilder rev = new StringBuilder();

for(int i = message.length()-1; i >= 0; i--) rev.append(message.charAt(i));

System.out.println(rev.toString());

 

 

3. 反转一个栈

import java.util.*;

public class MyProgram extends com.ktbyte.submit.Coder {

    public static void main(String args) {

        Stack items = new Stack();

        items.push("he");      //he is at the bottom of the stack

        items.push("saw");

        items.push("a");

        items.push("racecar");

        reverseStack(items);   //now he is at the top

 

        //print in order pushed:

        while(items.size()>0) System.out.println(items.pop());

    }

 

    public static  void reverseStack(Stack stack) {

        Queue rev = new LinkedList();

        while(stack.size()>0) rev.offer(stack.pop());

        while(rev.size()>0)   stack.push(rev.poll());

    }

}

 

 

问题解决的步骤和错误:

 

 

1. 解析问题,手工 解决

  • 对于孩子和成年人而言,这一步对前者来说更困难
  • 然而,如果要求误解了问题的学生来重读这个问题,孩子们的表现会超过成年人

 

 

2. 想出一个伪代码算法

  • 在这一步,学生的表现比成年人要好。
  • 让人震惊的是,很多成年人不知道如何用他们偏好的编程语言从一个字符串中抽取一个字符。

 

 

3. 将算法转换为代码

  • 我们有一些 C++ 程序员,他们不知道方括号以及一些 C 程序员,他们采用指针运算,但是却失败了。
  • 更让人吃惊的是,当他们允许查阅 java API 文档 或者使用参考书,很多成年人无法找到合适的文档来帮助解决问题。
  • 的确,一些中学生已经忘了如何使用栈或者实例化一个队列,但是,所有人都能够在适当的时间内通过查阅找到解决办法。
  • 会写代码的成年人(曾经会)经常会超过时间限制。

 

 

有很多糟糕的代码编写者,即便你也是其中一个,也别不要害怕

 

 

下面的方法并不是为了让求职者参加一个 完整的堆栈训练营 。相反,如果你是一个正在努力和 编程谜题 做斗争的成年人:

 

 

1. 不停练习,直到你能快速且正确地写出小的代码片段 。没有任何理由用自己喜欢的语言写不出一个双循环。找一些带有例子的小的代码智力题,你能在一分钟以内理解这些问题。对这类问题做成百上千遍的练习(不仅仅是几十遍,切记!)。

 

 

2. 为课本上的每个算法写一个用例列表 。一个共同的错误就是仅仅记住计算复杂度表。但是看一些算法的使用例子,例如  A* 搜索在哪些地方使用,这比学习代码本身要有用的多。

 

 

3. 至少做一个能逼迫你使用与工作相关的接口 / 用例的大型项目 。语言通常不是很重要,而且独自写一个大型工程能够强迫你去学新的设计模式以及远离遗留代码维护。代码面试是智利测试。所以它们很少关注具体的体系。

 

 

4. 让自己接触更优秀的程序员 。随着 CS 岗位的快速增长,应对 柠檬市场 的当前解决办法就是技术面试。但是同样也有其他的方式来反映被面试者的信息。例如,对热点话题、博客、技术的知识可以反映出对重要问题的意识。类似地,对恐怖故事采用幽默的代码书写方式,可以反映出经验和处理新问题的能力。幸运的是,在线代码编写社区随处可见,所以唯一地障碍就是是否肯花时间和保持谦虚。

 

 

编注:市场上产品质量等级不同,质量的差异与不确定存在于很多市场,而买卖双方的信息不对称,产品的卖方对产品的质量拥有比买方更多的信息,这种信息不对称情况下的市场可能导致某市场萎缩甚至消失,也就是所谓的柠檬市场。

全部评论

相关推荐

就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务