Microsoft .NET Framework 3.0
.NET Framework 3.0 中增加了不少新功能,例如:
- Windows Workflow Foundation (WF)
- Windows Communication Foundation (WCF)
- Windows Presentation Foundation (WPF)
- Windows CardSpace
Microsoft .NET Framework 3.5
.NET Framework 3.5 在3.0新增功能的基础上增量构建而成。此外,.NET Framework 3.5 还包含若干技术领域中的大量新功能,它们以新程序集的形式添加,以避免重大更改。
这些新功能包括:
- 与语言集成查询 (LINQ) 和数据感知紧密集成。借助这个新功能,您可以使用相同的语法,在任何支持 LINQ 的语言中编写相关代码,以筛选和枚举多种类型的 SQL 数据、集合、XML 和数据集,以及创建它们的投影。
- 利用 ASP.NET AJAX 可以创建更有效、更具交互性、高度个性化的 Web 体验,这些体验在所有最流行的浏览器上都能实现。
- 用于生成 WCF 服务的全新 Web 协议支持,包括 AJAX、JSON、REST、POX、RSS、ATOM 和若干新的 WS-* 标准。
- Visual Studio 2008 中面向 WF、WCF 和 WPF 的完整工具支持,其中包括支持工作流的服务这一新技术。
- .NET Framework 3.5 基类库 (BCL) 中的新类可满足许多常见的客户请求。
(出自:http://www.microsoft.com/zh-cn/download/details.aspx?id=21)
Microsoft .NET Framework 3.5 Service Pack 1
Microsoft .NET Framework 3.5 Service Pack 1 是一个完整的累积更新,包含很多基于 .NET Framework 2.0、3.0 和 3.5 不断生成的新功能,此外还包括 .NET Framework 2.0 和 .NET Framework 3.0 子组件的累积服务更新。
.NET Framework 3.5 Service Pack 1 版提供以下新增功能和改进:
- ASP.NET 动态数据,它提供了丰富的框架,从而使用户可以快速进行数据驱动的开发,而无需编写代码;并且增加了一项 ASP.NET AJAX 的新功能,为管理浏览器历史记录提供支持(后退按钮支持)。有关更多信息,请参见 ASP.NET 4 和 Visual Web Developer 中的新增功能。
- 对 CLR(公共语言运行时)的核心改进包括:改进了 .NET Framework 本机映像的布局、选择不再对完全信任的程序集进行强名称验证、提高了应用程序启动性能、改进了生成的代码以缩短端到端应用程序执行时间、选择在 ASLR(地址空间布局随机化)模式下运行托管代码(如果操作系统支持)。此外,从网络共享打开的托管应用程序在完全受信任环境下运行时与本机应用程序具有相同的行为。
- 提高了 WPF (Windows Presentation Foundation) 的性能,包括缩短了启动时间,提高了与位图效果有关的性能。WPF 的其他功能包括:改善了对业务线应用程序、本机初始屏幕、DirectX 像素着色器支持,并且新增了 WebBrowser 控件。
- ClickOnce 应用程序发行者可以决定在适当情况下不进行签名和加密,开发人员可以编程方式安装 ClickOnce 应用程序以显示自定义署名,并且 ClickOnce 错误对话框支持链接到 Web 上应用程序特定的支持网站。
- Entity Framework 是从现有的一套 ADO.NET 数据访问技术发展而来的。利用 Entity Framework,开发人员可以按照应用程序特定的域模型(而不是基础数据库模型)来针对关系数据库进行编程。有关更多信息,请参见 Entity Framework 入门(英文)。Entity Framework 还引入了一些其他功能,包括支持 SQL Server 2008 的新类型、默认实体图形序列化和实体数据源。此版本的 Entity Framework 支持 SQL Server 2008 中新的日期和文件流功能。图形序列化工作可帮助开发人员生成将全部图形建模为数据协定的 Windows Communication Foundation (WCF) 服务。实体数据源为希望使用 Entity Framework 的 ASP.NET Web 应用程序构建者提供了传统的数据源体验。
- LINQ to SQL 新增了对 SQL Server 2008 中新的日期和文件流功能的支持。
- ADO.NET Data Services Framework 由满足以下条件的模式和库组合而成:支持将数据公开为一项基于 REST(具象状态传输)的灵活数据服务,企业网络内部或整个 Internet 上的 Web 客户端都可以使用该服务。ADO.NET Data Services Framework 支持基于任何数据源创建数据服务。通过与 ADO.NET Entity Framework 的充分集成,可以轻松公开基础存储架构的概念视图模型。可以轻松地从任一平台访问使用 ADO.NET Data Services Framework 创建的服务以及兼容的 Windows Live (dev.live.com) 服务。针对在 Microsoft 平台上运行的客户端应用程序提供了一组客户端库,以简化与数据服务的交互。例如,基于 .NET Framework 的客户端可以使用 LINQ 查询数据服务,也可以使用简单的 .NET Framework 对象层更新此服务中的数据。
- 现在,Windows Communication Foundation 提供了改进的互操作支持、增强了部分受信任情况下的调试体验,并且扩展了整合协议支持以在 Web 2.0 应用程序中可以进行更广泛的应用,从而使 DataContract 序列化程序更易于使用。
- 用于 SQL Server (SqlClient) 的 .NET Framework 数据提供程序新增了对 SQL Server 2008 中的文件流和稀疏列功能的支持。
(出自:http://www.microsoft.com/zh-cn/download/details.aspx?id=22)
Microsoft .NET Framework 4
.NET Framework 是由 Microsoft 开发的一种全面且一致的编程模型,用于生成具有视觉震撼力的用户体验、无缝的安全通信和对一系列业务流程进行建模的能力的应用程序。.NET Framework 4 将与旧的 Framework 版本并行工作。 默认情况下,基于早期版本的 Framework 的应用程序将继续在目标版本上运行。
Microsoft .NET Framework 4 提供了以下新功能和改进:
- 公共语言运行时 (CLR) 和基类库 (BCL) 的改进
- 性能改进,包括更好的多核心支持、后台垃圾回收和服务器上的探查器附加。
- 新的内存映射文件和数字类型。
- 更轻松的调试,包括转储调试、Watson 小型转储、64 位的混合模式调试和代码协定。
- 有关 CLR 和 BCL 的增强功能的完整列表,请转到此处。
- Visual Basic 和 C# 语言中的创新,例如 lambda 语句、隐式行继续符、动态调度和命名/可选参数。
- 数据访问和建模的改进
- 利用 Entity Framework,开发人员可使用 .NET 对象和语言集成查询 (LINQ) 对关系数据库进行编程。 它具有多项新功能,包括持久性忽略和 POCO 支持、外键关联、延迟加载、测试驱动开发支持、模型中的函数和新的 LINQ 运算符。 其他功能包括:带自跟踪实体的更好的 n 层支持、使用 T4 模板的可自定义的代码生成、模型首次开发、改进的设计器体验、更好的性能以及实体集的复数形式。 有关更多信息,请转到此处。
- WCF 数据服务是 .NET Framework 的一个组件,可以利用此服务创建基于 REST 的服务和应用程序,以便使用开放式数据协议 (OData) 在 Web 上公开和使用数据。 WCF 数据服务具有多项新功能,包括增强的 BLOB 支持、数据绑定、行计数、源自定义、投影和请求管道改进。 当前与 Microsoft Office 2010 的内置集成可将 Microsoft Office SharePoint Server 数据作为一个 OData 源公开,并使用 WCF 数据服务客户端库访问该数据源。 有关更多信息,请转到此处。
- ASP.NET 的增强功能
- 对 HTML、元素 ID 和自定义 CSS 的更多控制,通过这些控制可更轻松地创建符合标准且 SEO 友好的 Web 窗体。
- 新的动态数据功能,包括新的查询筛选器、实体模板、对 Entity Framework 4 的更丰富的支持以及可轻松应用于现有 Web 窗体的验证和模板化功能。
- 针对新的 AJAX 库改进的 Web 窗体支持,包括对内容传递网络 (CDN) 的内置支持。
- 有关 ASP.NET 增强功能的完整列表,请转到此处。
- Windows Presentation Foundation (WPF) 的改进
- 添加对 Windows 7 多点触控、功能区控件和任务栏扩展性功能的支持。
- 添加了对 Surface 2.0 SDK 的支持。
- 新的业务线控件,包括图表控件、智能编辑、数据网格以及其他用于改进生成以数据为中心的应用程序的开发人员体验的控件。
- 性能和伸缩性的改进。
- 文本清晰度、布局像素对齐、本地化和互操作性的可视化改进。
- 有关 WPF 的增强功能的完整列表,请转到此处。
- Windows 工作流 (WF) 的改进,利用这些改进,开发人员能够更好地承载工作流并与其进行交互。 这些改进包括:改进的活动编程模型、改进的设计器体验、新的流程图建模样式、展开的活动面板、工作流规则集成和新的消息相关功能。 .NET Framework 4 还显著提高了基于 WF 的工作流的性能。 有关 WF 的增强功能的完整列表,请转到此处。
- Windows Communication Foundation (WCF) 的改进,例如对 WCF 工作流服务的支持(可启用带消息传递活动的工作流程序)和相关支持。 此外,.NET Framework 4 还提供了新的 WCF 功能,如服务发现、路由服务、REST 支持、诊断和性能。 有关 WCF 的增强功能的完整列表,请转到此处。
- 创新的新并行编程功能,例如并行循环支持、任务并行库 (TPL)、并行 LINQ (PLINQ) 和协调数据结构(可让开发人员利用多核处理器)。
(出自:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718)
Microsoft .NET Framework 4.5
在部署期间,能够通过检测和关闭 .NET Framework 4 应用程序来减少系统重启。 请参见在 .NET Framework 4.5 安装期间减少系统重新启动。
简记微软实习生面试 - 侯凯 阅读原文»
首先介绍下自己:小硕,2015年毕业,北邮,模式识别方向,本科是学通信的,计算机初等水平吧,熟练使用C++,了解STL吧,C#/Java/Python/R也都用过,面比较广,码农低等水准,复杂的算法看懂就不错了...(文章长些,不喜勿喷)
2014年刚开学,实验时开学后没什么任务,年假里看了些安卓的书,于是花费5天用Andengine开发了一款小游戏,纯属自娱自乐了,"暗兽器"(象狮虎豹那种)。2月20号的时候,师兄要收简历说帮阿里巴巴内推实习,顿时就感觉慌了,什么知识也没有准备,劣性不该,想干什么做什么…匆忙做了份简历发给了师兄。24号的时候发现论坛上微软招实习生的消息,软件开发,简历也都有了就投了一份,然后生活照旧,写写程序,看看书,还有实验室的小活。
26号下午,收到了微软的电话,内容很简单,说我们看到了你的简历,希望明天见面聊聊。我问地址,他说微软研究院自己查吧,很好找...说话很可亲,聊聊嘛,我说时间可以,然后就屁颠地挂了电话,继续写实验室的层次聚类的一个程序。吃完晚饭,感觉明天就要面试了,第一次找实习还是很紧张的,好好准备下吧,看看C++准备点什么,于是先上网搜了下别人的面经,顿时就吓坏了,看到了这个:
http://blog.csdn.net/uestcleo/article/details/7556364;还看到了这个:
http://topic.yingjiesheng.com/mianshi/jingyan/2012/0420/422268.html,等等吧,看完后精神顿时高涨了很多,心里那个委屈啊(本科我怎么没学计算机了,学那些大学物理、电磁场、高频什么的现在也用不到啊),总之,还没去感觉自己就要挂了,主要是我还什么也没准备呢,开学一直没想这事啊。赶快指定了计划:看遍以前的C++笔记、看完数据结构(查找和图有几节没学)、看点操作系统吧,忙碌了一晚上,第二天中午又继续看了3个小时,又分析了下上面那些网页里的微软面试题。看着就害怕...下午1点就硬着头皮出发了。
到微软1点50多,在前台等了一会,来了个技术人员(一面面试官)把我带了进去,17楼,出楼梯,说等会,我去那套题...,看来真不是只聊聊,被电话骗了吧。找了个房间,递给我题,面试官说你做着,20分钟我过来,说着他看看表:诶,正好2点整。我也看了下表,咦,这不明明是2:02嘛。。。看看卷子20分钟15道题,只有一个想法了:挂了。
说一下题目吧,整个试卷是以C#为主吧,可能每个部门不一样,但能感觉出来C#都很基础,不难,只要真正学过C#的(不要像我只在C#中写过点处理程序),了解下C#的底层,至少4道题应该没问题。话说回来,可惜我没真正学过,C#的还有ASP.NET的我就直接放弃了,只回答了下C++中知道的,当然最后C#的也蒙了点。
1.抽象类和接口的区别?
1、抽象类是类,它的子类不能再继承其它类了,但可以实现一个和多个接口。接口不是类,它的子接口可以继承多个接口。
2、抽象类中是可以有不用abstract修饰的方法,而接口中只能有抽象方法,即方法都要用abstract修饰。
3、抽象类可以实现接口,而接口是不能继承或实现抽象类的。2.进程和线程的区别和关系?
进程是资源分配的基本单位,线程基本上不拥有资源;线程是程序执行的基本单位,进程创建时一般只有一个线程,需要时可由这个线程创建其他线程;一个进程可以有多个线程,它们共享进程资源,在进程的空间中并发活动。3.UDP和TCP协议的区别?
TCP是面向连接的,可靠传输,适于传输大量数据;UDP是面向非连接的不可靠传输,适于小量数据的传输。4.异步的概念和实现方式?
当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。
5. .NET的内存回收机制?
每次当开发人员使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。新创建的对象被放在上次创建的对象之后。垃圾回收器保存了一个指针,该指针总是指向托管堆中最后一个对象之后的内存空间。当垃圾回收器的指针指向托管堆以外的内存空间时,就需要回收内存中的垃圾了。在这个过程中,垃圾回收器首先假设在托管堆中所有的对象都需要被回收。然后它在托管堆中寻找被根对象引用的对象(根对象就是全局,静态或处于活动中的局部变量以及寄存器指向的对象),找到后将它们加入一个有效对象的列表中,并在已经搜索过的对象中寻找是否有对象被新加入的有效对象引用。直到垃圾回收器检查完所有的对象后,就有一份根对象和根对象直接或间接引用了的对象的列表,而其它没有在表中的对象就被从内存中回收。
6.堆和栈的区别?
栈区由编译器自动分配释放,存放函数的参数值,局部变量的值等。堆区一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
C#中值类型存放在堆栈中,引用类型存放在托管堆上。7.泛型的概念和泛型类型
这里问的应该是C#的,我不太了解,回答的C++的泛型编程:通过模板实现同一算法,并使其适用于不同的数据类型。(容器)类型有:string、vector、list、queue等。
8.考虑有个数据库表manager(employee_name,manger_name)表示职员被那个经理管理,现在要找到直接或间接被某个经理管理的雇员?
这是《数据库系统概念》书中第四章的递归查询,可惜星号部分,看的时候一扫而过,只写了四个字:递归查询。其实程序应该是:
with recursive empl(employee_name,manager_name) as
(
select employee_name,manager_name
from manager where manager_name = 'XXX'
union
select manager.employee_name,empl.manager_name
from maneger,empl
where manager.manager_name =empl. employee_name
)
select * from empl;9.按指定位置交换字符串两部分的位置比如:函数输入("abcde", 2) 输出"cdeab"
int SwapStr(char* input, int pos)
{
char* p = input+pos;
int nLen = strlen(input);
//对输入数据检查
if (input==NULL || nLen<pos)
{return -1;}
char* temp= new char[pos+1];
if (temp == NULL) return -1;
memcpy(temp, input, pos);
temp[pos]='\0';
memcpy(input, p, nLen-pos);
memcpy(input+nLen-pos, temp, pos);
delete[] temp;
temp = NULL;
return 0;
}10.给定链表的头指针和一个结点指针,在O(1)时间内删除该结点,链表结点的定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};函数的声明如下:void DeleteNode(ListNode *pListHead, ListNode *pToBeDeleted);
void DeleteNode(ListNode *pListHead, ListNode *pToBeDeleted)
{
if (NULL != pToBeDeleted->m_pNext)
{
ListNode *pRealDeleted = pToBeDeleted->m_pNext;
pToBeDeleted->m_nKey = pRealDeleted-&
没有评论:
发表评论