淘宝资深php码工电面流水帐 经验、教训

2010-11-21 17:51

淘宝资深php码工电面流水帐 经验、教训

by

at 2010-11-21 09:51:10

original http://www.javaeye.com/topic/818376

面试没有很针对性,我说熟什么就聊什么。

1、php,java,c的区别
    php动态,java,c静态。php,java有垃圾回收、异常机制,c没有。php弱类型,java,c强类型,不过php跟java运行时也有类型,c只有在编译时有类型。php没有多线程,c,java有。php,java程序天然跨平台,c要关心很多平台相关的东西。php,java面向对象,c不是。php,java更高层,c低层。
2、php的变量在c里如何表示?
struct zval_struct {
   is_ref
   ref_count
   type
   zend_value
}
union zend_value{
   null,long,double,bool,string,hashtable,object
}
3、php的引用是怎么回事?
    常规变量对应的值是有真实地址的,引用变量只是对常规变量的一个引用,被引用的常规变量的refcount+1
4、php的引用有什么优势?
    省内存。只有对作为引用的变量所对应的值进行修改时,才会去分配新的空间出来给这个变量所对应的值。
5、php的垃圾回收机制是怎么样的?
   根据purple,black,white,gray,black等颜色来标记的。把那些对象去遍历一遍把refcount-1。。然后再标记成不同颜色进行处理。
  回收过程中最难处理的问题?
   cycle reference的问题。
6、 memcached是单进程单线程、多进程单线程、多进程多线程还是。。。?
    单进程多线程,默认4个线程。
    master/slave进(线)程模式有什么好处?
     并行处理上有优势。master进(线)程专门监听并接受socket请求,然后均匀的分给slave进(线)程,memcached用的是取摸的方式。可以通过master进程对slave进程的来进行管理,是父进程与子的关系。
7、memcached的内存管理有什么优势?
    一开始就分配很大的内存块,等用完后再倍数增长。而且客户端delete命令过来时也没有把存储的东西删除掉,没有将响应内存free掉。减少malloc,free的调用次数,减少系统调用、cpu时间、内存碎片。


总结:这次面试真是死的很惨,最后一着急竟然把书名都搬出来了(unix环境高级编程)。“unix环境高级编程上有的”,“我上半年看的代码,现在忘了,哎”,最后差不多被面的气都透不出了。

从各方面来说,因为我也是第一次被问到类似问题,平常面试都没有这点深度,面试经验太少,没有对这些问题形成快速条件反射,有些问题其实一个人想时、和同事讨论时是知道答案的,但就在这种需即问即答的电面中答不出;
面试官的问题也真的很经典,xxx有什么优势? 这种问题,一定要在心中提前有一个总结,要对其他参照物进行过比较,并且知道面试官想要的答案,这样就能快速答出来的,能给面试官“资深”的感觉,而如果提前只是知道它们是那么回事,没有总结过、不知他心里的参照物是什么、不知对方想要什么答案,结果是往往自己把自己给吓倒了,在他的连续问中败下来。

这次也是因为我在家里休息了3、4个月,没有工作的节奏了,人都懒散了,如果不是复习了几天php代码,连第2题都快忘差不多了。

上面大部分问题都不是如上回答的,竟然一开始就跟他在c跟java上耗上了:

我:XX是先编译后解释的,XX是需要你显示编译的,XX是不需要你显示编译的。。。。哎,垃圾一大堆,因为看过SICP,所以逢上技术人就喜欢往这方面扯。受unix影响,个人也较喜欢简单的东西。

我:c可以把函数指针作为参数来传递,java没这么灵活;java在速度上是没有c快的;底层是非c莫属的。
他:java在速度上是没有c快的,你确定吗?
我:编译器优化一下应该差不多
他:底层是非c莫属,那么在底层架构上java跟c有什么区别?
我:(我指的底层是指驱动等,直到事后我才明白他所谓的底层是指taobao网站类似的底层)java的变量都是有严格约束的,c的变量约束比较。。
他:看来你对java还不是。。。
我:((事后。。。)看来他是个java粉丝   )

(我以前也是非常喜欢java,离不开eclipse,瞧不起zend studio,现在我也想开了,已转向更primitive的vi和geany。)


在第一题就回答的一踏糊涂,后来就越来越挡不住了。睡了一晚才回过神来,以前看了那么多源代码,竟然在面试中没发挥好。电面啊电面,我面功还不行。以后遇到类似有什么优势的问题,不妨问面试官,“这个,您能不能提供给我一个参照物,比方说它跟什么东西比有什么优势,就它一个东西我还真说不出来。”

比方说nginx跟apache比有什么优势,我还能说出大部分,但就单单某个东西有什么优势,我实在不知面试官在问时的潜在比照对象是什么,不知他的期望答案,在没接触过这类问题前,实在是有点高深

好不容易才盼来的taobao面试,就这样迷迷糊糊地过去了;不过以我的身体素质,进taobao可能也直的进去,横的出来,呵呵。不过taobao技术氛围好,怎么说呢,有时真是人算不如天算,技术还是没身体重要。

      <br><br>
      作者: <a href="http://abcd1f.javaeye.com">abcd1f</a> 
      <br>
      声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
      <br><br>
      <span style="color:red">
        <a href="http://www.javaeye.com/topic/818376" style="color:red">已有 <strong>3</strong> 人发表回复,猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
      </span>
      <br><br><br>

JavaEye推荐