一次有趣的面试

 仅仅是有感而已

上个星期我面试了一个candidate,他说他对于软件架构和框架非常有经验。他一直从事嵌入式多媒体软件的研发。给我介绍了整个他们使用的开源框架GStreamer。看的出来他对于GStreamer很了解。于是我对于框架提出了一些问题,诸如这个框架的扩展点,限制等等。谈及扩展点,他并没有意识到一个框架最基本的能力:控制如何扩展和如何限制扩展。我出了一个很简单的题目,对于一个写Linux和GStreamer的C/C++人员来说应该是很基本的。

 

  
  
  
  
  1. class A 
  2.    public
  3.      A(){f();}; 
  4.      void g(){f();}; 
  5.    private
  6.      virtual void f(){cout<<"A::f";}; 
  7. }; 
  8.  
  9. class B : public A 
  10.    public
  11.      void * f(){cout<<"B::f";}; 
  12. }; 
  13.  
  14. void test(A& a) 
  15.    a.g(); 
  16.  
  17. int main() 
  18.    B b; 
  19.    test(b); 
  20.  
  21. 输出是什么?和扩展点有什么关系?为什么是这样,如果A::f是public又会怎么样?你如何控制和限制扩展? 

candidate告诉我,他不知道但是猜了一个输出(不幸猜错了)。后来问我:你们怎么考这些记忆性的东西?人家微软google都考算法,创造性的问题。

呵呵,我只是告诉他

1.考不考算法基于公司做什么。大多数人只使用list,那我问你桶排序你可能也觉得不恰当

2.因为我想知道你在设计架构/框架的时候会怎么考虑,怎么取舍。前提是这些都是可实现的。

 

看官,你如何想呢?

 

 

很久以前我写了这个博文,其实我个人不是很赞同这个candidate。首先作为一个软件开发人员或者是architect,你首先要做的事情是设计并且实现stakeholder的需求。这是老板给你工资的原因。我不喜欢这种总是以算法、创造性挂在嘴边的人。我很纳闷,为什么做技术的人会高开高走,就因为他们要显示自己“牛”?我也很不喜欢将Google挂在嘴边的人,你可以去Google,不是吗?而且我个人认为一个连C++都半吊子的,Google会要你?!嘿嘿

不积跬步无以至千里。首先让我知道你有基础,有积累,否则我只能认为你只是夸夸其谈。我们不需要“资深宣传专员”或者“技术讲师”。

你可能感兴趣的:(框架,面试,职场,休闲)