本文发表在 rolia.net 枫下论坛跟一个朋友谈面试,有些想法,写下来供大家参考。
朋友是码工,面试不少,就是没有螯佛,他不知道是什么原因。俺聊了一下,感觉是技术问题。
面试官问朋友,数据库如何实现 many to many relationship,朋友说没答出来。俺有两个感触。
第一,即使是码工,数据库也是必须要懂的。俺做码工混饭这么多年,经过这么多个地方,没有一个项目不用数据库的。数据库的基本概念,比如 entities and relationships,primary keys and foreign keys,transactions,肯定是要懂的。数据库跟语言的接口,比如 Java 的 JDBC,JDBC 里的基本概念比如 Connection,Statement 应该是毫不含糊的。
第二,面试前要准备基本概念。以前俺面试,每次都花一天过一下这些基本概念。从你的角度看,你整天都是码码子,不需要跟这些基本概念打交道,你觉得不会回答这些问题一样吃饭。从面试人的角度看,他只有半个小时时间,问你基本概念,是最直接最有效的办法。而且他觉得,不懂基本概念,你就不会是一个好码工,其实也不无道理。
面试官问朋友,为什么要用 virtural destructor?朋友解释半天,指针这个,指针那个,就是说不到点子上,俺也有两个感触。
第一,朋友说,有这么多面试题要背,我英语又不好,怎么办?俺说,你错就错在这个“背”字,如果你不去背,而是去理解,就一点也不难了。比如这个 virtual destructor,它的目的就是要 derived class 里分配的资源能得到释放。理解了这一点,你什么都不用“背”,到时候你用自己的话讲出来就行了。
第二,面试回答问题,跟平时交流一样,贵在击中要害。朋友解释来解释去,似乎在说 virtual destructor 在运行时是如何实现的。大家在对某一个概念没有理解透的时候,就往往会从这些细节回答问题。这样做的结果往往是面试官不耐烦,觉得你不懂装懂。其实这个 virtual destructor 问题,如果你从要害上说,顶多五六个字就行了。从要害上回答问题,往往一个字面试官就知道你懂了,而且往往凭这一个字就放了你。
综上所述,学东西贵在理解,讲东西贵在击中要害。下回你准备基本概念的时候,要想办法去理解它。理解了以后再试图用几个字来解释它,如果你做不到,说明你可能没有理解透。
面试官问朋友为什么要用 factory pattern,又一次说明俺上面说的两点多么重要。朋友说他看了别人介绍的一篇文章,背下来了,但是背的不好。俺让他就当俺是面试官给俺回答这个问题,他说了好几句也说不到点子上,跟 virtual destructor 一样,俺觉着他好像也是在解释这个 factory pattern 是怎么实现的。
其实如果你真正理解这个 factory pattern,你就知道要点是 decoupling 和 cohesion。俺个人认为,coupling 和 cohesion 是软件设计里最重要的两个概念。其实所有的 design pattern,都可以从这两个角度解释。如果你能从这两个角度解释,只需一两句话,你就能得个七八十分。更多精彩文章及讨论,请光临枫下论坛 rolia.net
朋友是码工,面试不少,就是没有螯佛,他不知道是什么原因。俺聊了一下,感觉是技术问题。
面试官问朋友,数据库如何实现 many to many relationship,朋友说没答出来。俺有两个感触。
第一,即使是码工,数据库也是必须要懂的。俺做码工混饭这么多年,经过这么多个地方,没有一个项目不用数据库的。数据库的基本概念,比如 entities and relationships,primary keys and foreign keys,transactions,肯定是要懂的。数据库跟语言的接口,比如 Java 的 JDBC,JDBC 里的基本概念比如 Connection,Statement 应该是毫不含糊的。
第二,面试前要准备基本概念。以前俺面试,每次都花一天过一下这些基本概念。从你的角度看,你整天都是码码子,不需要跟这些基本概念打交道,你觉得不会回答这些问题一样吃饭。从面试人的角度看,他只有半个小时时间,问你基本概念,是最直接最有效的办法。而且他觉得,不懂基本概念,你就不会是一个好码工,其实也不无道理。
面试官问朋友,为什么要用 virtural destructor?朋友解释半天,指针这个,指针那个,就是说不到点子上,俺也有两个感触。
第一,朋友说,有这么多面试题要背,我英语又不好,怎么办?俺说,你错就错在这个“背”字,如果你不去背,而是去理解,就一点也不难了。比如这个 virtual destructor,它的目的就是要 derived class 里分配的资源能得到释放。理解了这一点,你什么都不用“背”,到时候你用自己的话讲出来就行了。
第二,面试回答问题,跟平时交流一样,贵在击中要害。朋友解释来解释去,似乎在说 virtual destructor 在运行时是如何实现的。大家在对某一个概念没有理解透的时候,就往往会从这些细节回答问题。这样做的结果往往是面试官不耐烦,觉得你不懂装懂。其实这个 virtual destructor 问题,如果你从要害上说,顶多五六个字就行了。从要害上回答问题,往往一个字面试官就知道你懂了,而且往往凭这一个字就放了你。
综上所述,学东西贵在理解,讲东西贵在击中要害。下回你准备基本概念的时候,要想办法去理解它。理解了以后再试图用几个字来解释它,如果你做不到,说明你可能没有理解透。
面试官问朋友为什么要用 factory pattern,又一次说明俺上面说的两点多么重要。朋友说他看了别人介绍的一篇文章,背下来了,但是背的不好。俺让他就当俺是面试官给俺回答这个问题,他说了好几句也说不到点子上,跟 virtual destructor 一样,俺觉着他好像也是在解释这个 factory pattern 是怎么实现的。
其实如果你真正理解这个 factory pattern,你就知道要点是 decoupling 和 cohesion。俺个人认为,coupling 和 cohesion 是软件设计里最重要的两个概念。其实所有的 design pattern,都可以从这两个角度解释。如果你能从这两个角度解释,只需一两句话,你就能得个七八十分。更多精彩文章及讨论,请光临枫下论坛 rolia.net