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

从工体到圣西罗 2014-07-25 10:25:26
加精
如果你只想获取一些面试准备经验,那么你可以直接跳到文章的最后部分。

问题如下:

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. 解析问题,手工“解决”

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

2. 想出一个伪代码算法

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

3. 将算法转换为代码

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

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

可以尝试下面的方法:

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

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

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

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

转自:伯乐在线
...全文
168489 533 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
533 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeyLoveCS 2016-09-21
  • 打赏
  • 举报
回复
wangby95 2016-09-21
  • 打赏
  • 举报
回复
引用 7 楼 zeuong 的回复:
第一题我觉得遍历3或5的倍数的次数会好点,遍历次数更少
按照2,3,3,2,1,3,1,向上加,没有多余的
NineCrazy 2015-11-17
  • 打赏
  • 举报
回复
地三个没看懂 面试原来靠这个。受教了
kernelkoder 2015-10-21
  • 打赏
  • 举报
回复
你读过the art of computer programming吗?那个才算是一般的算法
crazy_for_it 2015-10-21
  • 打赏
  • 举报
回复
第一题的错误是啥啊 我咋没看懂
ojc520520 2015-10-18
  • 打赏
  • 举报
回复
penbox2 2015-10-17
  • 打赏
  • 举报
回复
标题党?多少有点嫌疑吧
街头小贩 2015-10-14
  • 打赏
  • 举报
回复
我只是打字的。火贴前留名
qzadsy 2015-10-14
  • 打赏
  • 举报
回复
mr bug and mr xie
qzadsy 2015-10-14
  • 打赏
  • 举报
回复
aaa 
浩澜藏 2015-10-14
  • 打赏
  • 举报
回复
请问你做多久开发了还在门外 1.自我介绍 2.你有什么优缺点 3.上一家公司你为什么辞职 4.你对我们公司有什么了解
feelyounger 2015-10-13
  • 打赏
  • 举报
回复
我觉得在时间有限的情况下,这么写答案可以满足要求啊。当然,如果时间来得及的话,可以进一步优化,比如大家说的第一题只考虑遍历3和5的倍数之类的。
peng_qing80 2015-10-10
  • 打赏
  • 举报
回复
霏霏第三代水电费
gaoxg17 2015-10-10
  • 打赏
  • 举报
回复
小七弦 2015-10-10
  • 打赏
  • 举报
回复
感觉不能立即就写出来,我给程序员们拖后腿了。。。
answer艾 2015-10-10
  • 打赏
  • 举报
回复
听说有几分 那就回答一下吧
心情心晴 2015-10-09
  • 打赏
  • 举报
回复
受教了,java都很长时间没看了,都有点生疏了!
心情心晴 2015-10-09
  • 打赏
  • 举报
回复
新人,果断进楼学习!
William_Wei007 2015-10-09
  • 打赏
  • 举报
回复
引用 7 楼 zeuong 的回复:
第一题我觉得遍历3或5的倍数的次数会好点,遍历次数更少
那是或的关系吧?如6 可以整除3但是不可以整除6 ,那也在其中啊。
zhangrhua1990 2015-10-08
  • 打赏
  • 举报
回复
怎么看不到 啊
加载更多回复(513)

662

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧