【面试题】新东方.NET工程师面试题总结

1、学校几本(是否统招)、英语等级、大学成绩排名Top%几、当前月薪(入职前是否能提供薪资证明材料)、期望月薪

二本,统招
英语四级
排名top10

2、做过的项目技术栈是什么?(例如 .NET、Sql Server、Dapper、EF、Redis……)

.NET、C#、EF、MVC、SQL Server、Oracle、WebService、API、SDK、Redis、JPush、Lucene.Net
Html、css、JavaScript、Ajax、Jquery、AngularJS、Bootstrap
iOS、Objective-C、Winforms、WPF

3、做过的项目中最大的表数据量大概多少?业务高峰期每分钟并发请求数量大概多少?遇到的最大技术难点与解决方案,研究过的.NET开源项目,举例说明3-5个

最大的表有200万条数据,数据查询出现慢的情况,优化方案:在条件语句的列上加索引;优化SQL避免like,in、not in等;使用分页临时表避免全表扫描;
高峰期每分钟并发请求2千左右;
技术难点:团队创立初期,APP刚刚上线,功能在逐步完善。当时为了推广拉新,想开发一个功能,实现APP的在微信里的传播分享。网站享用的是微信开放平台的网站应用号授权,还有另一块是微信公众平台公众号分享,分别是不同的两套APPID,授权之后会获取到两个不同的OpenID,希望用户信息打通,用户只要授权过一次之后就能在另一个模块实现免登陆。由于当时一心想通过业务存储两个不同的OpenID的关联关系,做到统一,结果走了不少弯路,仍然达不到想要的效果。
解决方案:UnionID,将两个账号在后台关联之后就能获取到统一的UnionID,业务记录此ID即可。

开源项目
Json.net Json序列化和反序列化,基本支持所有的json特性,性能也很好,MVC4的默认引用程序集中已包含.
Log4net 传统的日志框架,移植于log4jV1.2,高效,稳定
Html Agility Pack Html解析库
DotNetZip 创建,压缩,解压Zip文件
DotNetCodes 一些常用的功能性代码Utilities,可以减少许多开发时间,而且类与类之间没有什么依赖,每个类都可以单独拿出来使用,excel导出、二维码生成、网络请求等;

4、.NET系统如何实现水平扩展、如何解决高并发问题,解决方案思路

应用服务和数据服务分离:把网站分为应用服务器、文件服务器和数据库服务器,不同服务器承担不同角色,从而提成网站处理能力和文件存储能力;
数据库读写分离:通过配置主从服务器实现数据库读写分离,改善数据库负载压力;
业务拆分:根据产品线拆分,例如订单、商铺、买家等,分归不同业务团队管理,不同业务分不同物理服务器处理,可以通过消息队列进行数据分发;
使用NoSQL和搜索引擎:应用服务器通过统一模块访问各种数据,减轻应用程序管理数据源的麻烦;
应用服务器集群:通过负载均衡使一批设备共同对外提供服务,由统一调度服务器通过调度策略进行分发,当有服务器宕机时,调度服务器会将请求转移到其他服务器上,保证不影响用户使用;
分布式文件系统和分布式数据库系统:将业务拆分成不同模块,不同业务的数据库放在不同的物理服务器上;
缓存:包括本地缓存、分布式缓存、反向代理和CDN加速;
使用缓存改善网站性能:把业务经常访问的数据缓存到内存中,可以大大减少数据库的读取访问压力,从而改善写入性能,方式有本地缓存和分布式服务器缓存,部署大内存服务器;
反向代理和CDN加速:基本原理都是缓存,用户请求服务时,通过距离判断最近机房代理服务器中缓存这用户请求的资源,直接返回给用户,减轻后端服务器负载压力;
异步操作:典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不便,彼此功能实现可以随意变化而不互相影响;
固态硬盘代替机械硬盘:使用SSD,物理设备上加快文件访问速度;

5、国内外基于.NET技术的知名网站有哪些,.NET与Java相比有哪些优点、缺点,如何看待微软全新一代.NET Core开源、免费、跨平台的未来发展前景

.NET知名网站
国外:microsoft、stackoverflow、codeproject、myspace、Godaddy、msn、
国内:cnblogs、csdn、智联、携程、必应、起点、凡客

.NET和java对比

开源和跨平台,Java一直开源跨平台,有非常丰富的社区资源;微软14年也宣布开源跨平台,有.NET Core、xamarin,微软正在努力,但做到Java现在的程度个人觉得还有很长一段路要走。
编程工具,C#有好用的IDE Visual Studio;Java以前有eclipse,现在有Intellij。
语言特性,两者语法类似,C#feature更多(语言特性,泛型、委托、重载运算符、LINQ、lambda、delegate、扩展等),语法糖也更多,程序员基本可以专注逻辑而不用关注如何实现;而Java这块比较贫乏。
更新速度,C#由微软维护,版本更新快,支持更多新特性;java版本更新慢。
应用领域,C#目前主要应用在windows的PC应用,unitity3D,web。Java应用于web,Android,Hadoop等。
生态环境,个人认为最重要的一点。开源库和框架Java数不胜数,各种层面的解决方案眼花缭乱,C# web比较好用的框架只有asp .net、MVC。

.NET Core未来发展前景

个人看好 .Net Core 的未来发展前景。
.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案中进行使用。首先从Core的定位上来说,他摒弃了原有AspNet的那些臃肿组件,面向高性能服务器开发。虽然现在版本功能还比较弱,各类三方库支持也没有更新,但是这只是时间问题,以微软的更新速度和推广力度,几年后必将完善。
基于微软的 Azure 云的平台优势,后期势必会加入 .Net Core 的支持,加上微软的跨平台战略,对 Docker 的亲和性,对于开发人员也非常友好,所以整体环境来说是健康发展的,未来技术决策时 .Net Core 也有很大的优势。
因此未来其发展主要看的就是微软推广力度及社区开发者的支持度。
喜欢C#就会一直坚持下去,因为兴趣是最好的老师。

6、www.dot.net官网任选一篇英文技术文章,不用单词软件大概能看懂百分之多少?
看了一篇教学文章
https://www.microsoft.com/net/tutorials/csharp/getting-started/hello-world
全部英文文档大概能看懂百分之80

7、我们会根据以上信息进行岗位匹配度的评估(教育背景、技术能力、抽象总结能力……),节省应聘者的面试成本,提升招聘效率

8、为了方便及时沟通,请加技术经理微信 2531685528 注明:应聘.NET 姓名

-------------------------------------------------------

【.NET技术面试参考资料、图书】

1、《大型网站技术架构》

2、《Sql Server性能优化与管理的艺术》

3、《跟阿铭学Linux》

4、《深入浅出MySQL数据库开发优化与管理维护》

5、《微服务设计》

参考资料共享地址

http://pan.baidu.com/s/1nvUc1nz

http://www.apelearn.com/study_v2/

posted @ 2017-06-05 16:55  0539  阅读(8253)  评论(6编辑  收藏  举报