.Net程序员面试所需要的一些技术准备
夜已经很深了,但却毫无睡意,最近找工作和面试感触良多,所以想记录下来这段过程。
作为一个.Net程序员,不可否认是比JAVA要难混的。甚至在智联招聘或者大街网都没有.NET程序员的备用选项。真是令人悲伤。但既然已经选择了这门技术作为饭碗,那不如就做精做专了它,其实依然是可以达到很高的境界的。而且真正做到大师也一定不能被语言所局限,语言只是工具,而其中的编程思想才是真正的核心。真正的懂了,境界也就完全不同了。
但在作为菜鸟的阶段或者还没有达到一万小时的时间段,在找工作的时候不可避免需要一些准备。其实这些并不能叫做准备,而且在工作中也是最常用到的一些技能。其实这些所谓的准备也是对自己知识的考察,在平常垒代码的时候很多时候不会了就是google一下,stackoverflow问一下找到答案后甚至并没有理解透彻便用于项目之中,或者说你的知识累计只是需要用到了才开始钻研,并没有一个系统的总结和理解。这其实也是一个很好的系统自己知识的机会。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
下面罗列一些个人认为重要的点,当然也会持续更新,可能很多人会说这些本来就是.NET所需要会的,当我觉得还蛮需要来总结一下,给需要用到的朋友们吧。
1. .NET语法基础. 这部分最为庞大,最经常用到但也是最经常被问到的时候蒙掉的一部分。基础其实是需要一遍遍的练习和一遍遍的记忆的。比如class和struct的区别,重载和重写的定义,class修饰符的一些特点啊什么的,委托和事件区别啊什么的。这些都是经常用到的,但是别人问的时候需要的是一个答案,而不是你模棱两可的描述。所以基础知识我认为还是需要一些时间来去记忆的。尤其是一些区别和具体使用的场景。其实这也是自己对.NET知识的一个查漏补缺。
2. .NET技能. .NET技术很多,比如CS的WPF, WINFORM,BS的ASP.NET,Server的WCF等等。我的看法是自己擅长的一定要专精,要非常精。这毕竟是自己的饭碗,就不多说了。不擅长的一定要了解,至少能够正常的使用,但我认为要做到高级.NET工程师,这些都是需要精通的。毕竟每一个技术都代表的编程的一个方向。研究透了,换其他语言学的话也会非常精通。所有技术的最核心思想都是互通的,就好像所有的计算机最终其实都是对1和0的加减法。
3. .NET CLR. 很多.NET程序员都是停留在使用.NET这个语言的使用上,这其实是很浅显的。只有懂了CLR, .net framework里面的机制和精髓,才算是真正的.NET开发。有句话说得很好,真正的精通是,假如没有.NET,你可以完全写出一份出来。当然这个太夸张了,微软那么多大牛写出来的东西怎么可能一个人完全写出来。但也是说明精通是一定要懂得其内核机制,和怎么实现的,并不是说知道怎么用,和怎么用好。
4. 数据库. 不管什么语言,程序员是一定会和数据库打交道的。所以数据库也是需要精通的,没什么好说的。
后面两项是我认为非常重要的,甚至超过前面四点,那就是 英语 和 独特的价值。
5.英语. 编程语言的语言。且不说英文对自己编程能力的必要性,以及将来提升的一个决定性因素,就只说现在招聘里全英文环境外企的薪资和普通环境的薪资差,就应该值得我们非常努力了。英文的无压力交流和文章顺畅的读写,是一个程序员必备的素质。
6.独特的价值. 这点是我觉得能让你鹤立鸡群的最重要的一点。这世界上的程序员太多了,所谓的码农遍地是,竞争也是非常的大。技术毕竟没有极限,牛人之上必有更牛的人。那你假如和比你牛的人一起面试,你如何才能让公司选择你而不是技术更好的他们呢?Key就是你独特的价值,别人不具有的。举个例子,在我之前的公司,前端都是在用WPF,技术高低差别并不大,但我个人比较喜欢具有设计感和良好用户体验的感觉,就研究了WPF的Animation,做了很多的demo,当这个项目切实需要Animation的时候,这时候我就成为了专家,这便是我独特的价值。这个例子也许并不恰当,但我想表达的就是想出众就一定先让自己不平凡。自己那一份独特的价值便是别人选择你而不选择其他人的理由。
其实总觉得还有一些漏掉的,但现在实在想不起来了,以后会补充的。
希望大家给予指导,尤其很需要担任过面试官的前辈的批评,这其实是我写这篇文章最想得到的。当然觉得好 点个赞的话我就更加要谢过了 分享给更多人也是我的乐趣所在。
最后希望自己最近的面试顺利,能把自己水平完全展示出来就是足够了。