.NET人技术太菜的话,要好好学习啊,所以看到Java届的面试对话文章,不经意想用C#的知识想做一些回应(其实也没有什么了不起的)。
楼下知识文章扩展一览,外加自己接触到的扩展。水太深!
static void Main(string[] args) { /* 对这篇java文章的C#引申扩展(不要以为java很高深,C#的水才是深的不要不要的,颠覆者有几人?) * http://www.cnblogs.com/zuoxiaolong/p/life51.html */ //以下就是在C#中的对应和作用 /* java中的LinkedList,ArrayList,HashMap,TreeMap */ /* using System.Collections.Generic; 该命名空间 */ //http://my.oschina.net/Tsybius2014/blog/227365 LinkedList<string> list1 = new LinkedList<string>();//双向链表 //http://www.cnblogs.com/linlf03/archive/2011/12/09/2282574.html Dictionary<string,string> list2 = new Dictionary<string,string>(); //http://www.cnblogs.com/hkncd/archive/2011/05/30/2063124.html //源码https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/SortedDictionary.cs SortedDictionary<string, string> list3 = new SortedDictionary<string, string>();//内部使用红黑表实现,性能优越 //扩展延伸 SortedList<string,string> 性能逊于 SortedDictionary 但是各有优缺点 //扩展说明 /* System.Collections.Concurrent 其实在集合的class有很多,这里提一下多线程并发下的集合。都是在这个命名空间下面 ConcurrentDictionary ConcurrentQueue ConcurrentStack * 字典,队列,栈都是队友的并发class */ /* Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。 */ /*比如面试官可能会先问你,如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?*/ //http://blog.csdn.net/wangqiuyun/article/details/13509225 AutoResetEvent[] resets = new AutoResetEvent[5]; //AutoResetEvent ones = new AutoResetEvent(); //System.Threading.WaitHandle.WaitOne; //使线程一直等待,直到单个事件变为终止状态; System.Threading.WaitHandle.WaitAny(resets); //阻止线程,直到一个或多个指示的事件变为终止状态; System.Threading.WaitHandle.WaitAll(resets); //阻止线程,直到所有指示的事件都变为终止状态。 //Thread.Sleep(1000); /* IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。 */ //http://kb.cnblogs.com/page/94729/ /* Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。 */ //GC //http://kb.cnblogs.com/page/106720/ //类加载机制 //http://www.cnblogs.com/baihmpgy/archive/2013/02/27/CLR_Loader_And_OSGi.html //编程上的内存管理细节 //http://www.cnblogs.com/guodapeng/archive/2008/04/02/1134005.html //引申扩展 //EMIT,CodeDom,OWIN //OWIN 是Open Web Server Interface for .NET的首字母缩写,就是开放的web服务接口 //http://www.cnblogs.com/OceanEyes/p/thinking-in-asp-net-mvc-what-is-owin.html //IL的Emit,有大神用来写框架提高性能(https://github.com/qldsrx/OwinFramework 基于OWIN的框架) //http://www.csharpwin.com/csharpspace/10973r3457.shtml(基础介绍) //System.CodeDom //http://www.cnblogs.com/whitewolf/archive/2010/06/19/1760708.html //如果楼上看不懂就是自己学艺不精,自己菜逼,好好学习,天天向上。 Console.ReadKey(); }
自己也太菜,只能写这些了。
.NET技术文章的源码地址:
corefx 框架集 :https://github.com/dotnet/corefx
MVC 框架: https://github.com/aspnet/Mvc
Cache 组件 :https://github.com/aspnet/Caching
想要知道源码自己查,不怕你看,就怕你看不懂。
很多算法一看直接就懵逼了。
还有mono框架:https://github.com/mono/mono
自从14年MS开源开始,mono就开始吸收MS的代码,现在16了,基本吸收了查不到了(可以说已经有了windows上.NETFramework的性能,也许还有过之而无不及),这是社区幸事。
如果是长久混mono社区的(很多.NET逆向高手据说也常混,看雪论坛的大神如是说),发现mono从3开始,就开始发展迅猛,现在的4版本,更是性能加强。以前早年ASP.NET的代码就可以通过Jexus承载于mono,完美运行(只要你确定你写的代码可以跨平台)。
看看Core的里程(地址:https://github.com/dotnet/corefx/milestones),今年夏季就会到来的RTM和即将发布的RC2。以后是全平台的时代,.NET人应该广泛的在各个平台发挥实力!。(终于筹够了博客园的150字)