栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

某公司.Net高级开发面试题(1)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

某公司.Net高级开发面试题(1)

1.将字符串转换成时间类型,有几种方式?有什么注意事项?

Convert.ToDateTime(string)

Convert.ToDateTime(string, IFormatProvider)

DateTime.ParseExact()

DateTime.Parse

判断是否为空,是否是时间格式。

2.C#中字符串相加是使用什么操作符?如果需要在循环中构造字符串,要注意什么问题?为什么?

用+号

由于字符串对象是不可变的,所以每次循环都会对操作符左右两边的字符串进行拷贝,并生成一个新的字符串对象。

如何避免拷贝,有能达到拼接目的呢?

如果要使用循环构建一个大的字符串,推荐使用 StringBuilder 代替String,使用StringBuilder的 append() 方法进行字符串连接,并在循环结束后将StringBuilder 对象转为 String 对象。

StringBuilder 的原理是预先分配了一个足够大小的缓冲区,然后循环的过程就是往缓冲区里填充数据,比使用“+”做字符串连接的效率要高很多。

3.用Lamdbd表达式写一个委托,该委托有2个int参数,返回2个参数和的平方。

Func addMethod = (int x, int y) => (x + y)2;

 

4. 结构和类的区别

(1)class 是引用类型,structs是值类型

  (2)  class 创建在堆上,structs创建在栈上

   (3) class支持继承和多态,Struct不支持

 

5.说明下多浏览器的兼容性的实际问题

(1)集合类对象问题

问题说明:IE下,可以使用 () 或 [] 获取集合类对象;Firefox下,只能使用 [ ]获取集合类对象。

解决方法:统一使用 [] 获取集合类对象。

(2)eval(”idName”)问题

IE下,可以使用 eval(”idName”) 或 getElementById(”idName”) 来取得 id 为 idName 的HTML对象;Firefox下,只能使用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。

解决方法:统一用 getElementById(”idName”) 来取得 id 为 idName 的HTML对象。

const问题

问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量。

解决方法:统一使用var关键字来定义常量

frame和iframe问题  window.location.href问题

6.javascript如何实现类的构造,类的方法,以及类的继承,写出示列代码。

function Person(name,age){

this.name=name;

this.age=age;

this.sayName=function(){

}

}

funtion SubType(name)

{

 

Person.call(this,name);

this.age=age;

}

SubType.prototype=new SuperType();

 

7.请简单说明一下泛型技术

(1)可以避免装箱和拆箱操作(2)类型安全

泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用

好处是——类型安全和减少装箱、拆箱。提高性能、类型安全和质量,减少重复性的编程任务

8.请简单说明一下异常的处理方式,如果一个异常捕捉后,只是为了记录日志而不进行任何处理之后抛出,如何在重新抛出后保证原异常的堆栈信息不丢失?

在.NET 4.5中现在有 ExceptionDispatchInfo类。

这使您捕获异常并重新抛出它而不改变堆栈跟踪:

 

ry

{

    task.Wait();

}

catch(AggregateException ex)

{

    ExceptionDispatchInfo.Capture(ex.InnerException).Throw();

}

这适用于任何异常,而不仅仅是AggregateException。

它是由于等待C#语言功能引入的,该功能将AggregateException实例中的内部异常解包,以使异步语言功能更像同步语言功能。

9.如何防止js注入攻击和SQL注入攻击?

url地址防注入,输入文本框防止注入,过滤关键字符,加过滤器。

1.使用存储过程

2.使用参数传值的SQL语句

3.过滤非法字符,现给出过滤非法字符的函数

 

10.在很多web系统中,部分功能都是需要客户登录之后才能使用。在各页面中如何判断客户是否登录过?如果很多界面都有这个要求,应当如何处理?

Session 保存。

 

11 .子类如何调用重载父类的构造函数,在创建对象时,各级类之间的构造函数是按什么顺序调用的,如何判断某个对象是继承一个特定的类?

:Base(参数...)

1,如果继承虚基类,先调用虚基类的构造函数,如果有多个虚基类,按顺序调用。

2,如果继承基类,调用基类的构造函数;如果有多个基类,按顺序调用。

3,如果类中定义了成员对象,调用成员对象的构造函数;如果有多个成员对象,则按成员对象定义的顺序调用;

以使用 Type.IsSubclassOf 判断类的派生, 使用 Type.IsAssignableFrom 判断类的派生和接口继承。

 

16.多线程中,主线程应如何通知子线程要提前结束处理并正常退出?

var cts=new CancellationTokenSource();

var ct=cts.Token;

var td=new Thread(_=>{

  while(!ct.IsCancellationRequested)

{

    //your work here 

}

Console.WriteLine("thread exit");

});

td.Start();

Console.WriteLine("Press any key to stop the thread");

Console.ReadKey();

cts.Cancel();

Console.ReadLine(

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号