周二MS电面,先是老外经理问一些每家公司都会问的问题,像你的优点缺点啊做的项目啊等等,最大的难度就是英语,这个老外是我接触过的说英文最快的一个,还是通过电话,难度不小,不过居然听的都很明白,看来我的英语听说能力比我想像的要强!:)
老外搞定后,过了一会又来了电话,中国team leader问技术问题。
问题跟数据结构有关,1)如何用栈事先队列,2)如何用队列实现栈?
第一个问题比较简单,用俩栈来实现,先进栈A,再倒到栈B,最后从栈B出,就实现了先进先出的队列功能。
第二个问题想了一半放弃了,后来细想了一下自己的想法继续下去就对了,用循环队列实现。
总结:
1.电话技术面试比较突然,问题来不及准备,还是平时知识技能的积累储备不够,工夫在平时啊!
2.即使第一个问题想出了方案,但是并没有给出清晰的答题思路和步骤,说的比较模糊,需要加强思维逻辑性和表达能力的训练。
3.第二个问题想到了眉目,但是没有继续下去,一个重要的原因是把循环队列画成了圆形,不利于思考。如果用传统的线形再加一根从尾到头的箭头线,会比较容易看清楚。说明工整有效的图形和草稿对思维非常重要。当然归根结底还是对自己的萌芽想法没有足够信心,没能坚持下去。
附:
Q:如何用栈实现队列?
A:
设 2 个栈为 A,B, 一开始均为空 .
入队 :
将新元素 push 入栈 A;
出队 :
(1) 判断栈 B 是否为空;
(2) 如果不为空,则将栈 A 中所有元素依次 pop 出并 push 到栈 B ;
(3) 将栈 B 的栈顶元素 pop 出;
这个问题考察的是你能不能想到两个后进先出的数据结构连到一块就变成了先进先出的数据结构(有点像负负得正),即栈实现队列。
代码参考:<http://www.edu114.cn/soft/6/40121.html>
Q:如何用队列实现栈?
A:
采用一个循环队列,假设长度为n,最后一个数据进去之后所有的数据再移动n位,正好最后这个数据第一个出队列,然后再循环移动n位把所有数据按后进先出的顺序导出,正好实现了栈的功能。
这个问题考察的是你能不能想到类似操场跑步套圈来实现先后顺序逆转的方法。
注:看到用优先级别实现的方法<http://hi.baidu.com/avengine/blog/item/c7cc1e4c7195def9d72afcaa.html>
老外搞定后,过了一会又来了电话,中国team leader问技术问题。
问题跟数据结构有关,1)如何用栈事先队列,2)如何用队列实现栈?
第一个问题比较简单,用俩栈来实现,先进栈A,再倒到栈B,最后从栈B出,就实现了先进先出的队列功能。
第二个问题想了一半放弃了,后来细想了一下自己的想法继续下去就对了,用循环队列实现。
总结:
1.电话技术面试比较突然,问题来不及准备,还是平时知识技能的积累储备不够,工夫在平时啊!
2.即使第一个问题想出了方案,但是并没有给出清晰的答题思路和步骤,说的比较模糊,需要加强思维逻辑性和表达能力的训练。
3.第二个问题想到了眉目,但是没有继续下去,一个重要的原因是把循环队列画成了圆形,不利于思考。如果用传统的线形再加一根从尾到头的箭头线,会比较容易看清楚。说明工整有效的图形和草稿对思维非常重要。当然归根结底还是对自己的萌芽想法没有足够信心,没能坚持下去。
附:
Q:如何用栈实现队列?
A:
设 2 个栈为 A,B, 一开始均为空 .
入队 :
将新元素 push 入栈 A;
出队 :
(1) 判断栈 B 是否为空;
(2) 如果不为空,则将栈 A 中所有元素依次 pop 出并 push 到栈 B ;
(3) 将栈 B 的栈顶元素 pop 出;
这个问题考察的是你能不能想到两个后进先出的数据结构连到一块就变成了先进先出的数据结构(有点像负负得正),即栈实现队列。
代码参考:<http://www.edu114.cn/soft/6/40121.html>
Q:如何用队列实现栈?
A:
采用一个循环队列,假设长度为n,最后一个数据进去之后所有的数据再移动n位,正好最后这个数据第一个出队列,然后再循环移动n位把所有数据按后进先出的顺序导出,正好实现了栈的功能。
这个问题考察的是你能不能想到类似操场跑步套圈来实现先后顺序逆转的方法。
注:看到用优先级别实现的方法<http://hi.baidu.com/avengine/blog/item/c7cc1e4c7195def9d72afcaa.html>