网络公司的几道面试题,大家来晒晒自己的知识吧![SF]

asimplefire 2009-07-29 08:58:56
面试时,题量还有点大,只记得一些理论性知识的题,高手们,可否百发百中呢?不管怎么样,大家来晒晒吧!

1,类成员有哪几种可访问形式?
2,session的存储模式有哪些?
3,override与overload的区别
4,接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
5,C#是否可以对内存直接进行操作?如果可以,怎么来操作?
6,遍历页面TextBox并赋值String.Empty,请用C#与js实现
7,public static const int A=1;有何错?为什么?
8,请用C#实现一个双向链表
9,能用foreach遍历访问的对象需要怎样实现?
10,值类型与引用类型的区别。
11,asp.net的身份验证有哪些?
...全文
424 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
山书生 2009-07-29
  • 打赏
  • 举报
回复
持续学习:)
chen_ya_ping 2009-07-29
  • 打赏
  • 举报
回复
这些题目还不错。
kangsong 2009-07-29
  • 打赏
  • 举报
回复
你这些题目在我的面试资料里面都多!如果要的话加我QQ·我晚上回去传給你·346934131
dhb008 2009-07-29
  • 打赏
  • 举报
回复
LZ好题目 !! 基础牢固了才能找到好工作!!!
xupeihuagudulei 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cpp2017 的回复:]
还好,题目不是很bt.

[/Quote]
wo554006164 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zzxap 的回复:]
1,类成员有哪几种可访问形式? this. ; new class().method;
2,session的存储模式有哪些?
mode="InProc"
其中默认的mode是InProc类型,这种模式和以前ASP模式一样,就是服务器将Session信息存储在IIS进程当中,当IIS关闭、重起后这些进程信息都会丢失,但这种模式的性能最高(具体没测,看书上说),这种模式是ASP.NET的默认方式。
mode="StateServer"
这种模式当我们重起IIS,保存的session值不会丢失。另外这种方式还可以把信息保存在其他机器的进程中,不过还要更改 stateConnectionString="tcpip=127.0.0.1:42424",IP地址改为其他机器即可。
mode="SQLServer"

3,override与overload的区别
OVERRIDE:重置,覆盖,使原来的失去效果。
OVERLOAD超载是指在同一可访问区内被声名的、几个、具有不同参数列的(参数类型/个数/顺序,不同)、同名函数,程序会根据不同的参数列来确定需要调用的函数
Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。 
Overload返回值类型不同不能作为不同的两个函数,Override应该完全一样的返回类型。、

4,接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
接口可以继承接口.抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数.

5,C#是否可以对内存直接进行操作?如果可以,怎么来操作?
非安全代码

      非安全代码就是不在 CLR 完全控制下执行的代码,它有可能会导致一些问题,因此他们必须用 “unsafe” 进行表明:

      unsafe
      {
      ...
      // unsafe context: can use pointers here
      ...
      }

      在其他一些地方也可以使用关键字 ‘unsafe’,例如我们可以将类或方法表明为非安全的:

      unsafe class Class1 {}
      static unsafe void FastMove ( int* pi, int* pdi, int length) {...}

‘unsafe’ 关键字的必要性是它可以防止程序员的一些意外的用法。你可能会问既然是不安全的为什么还有人要用它。答案就是有时候,在有些情况下,还需要用到指针。

6,遍历页面TextBox并赋值String.Empty,请用C#与js实现
  C#版

void clean()//循环清空
        {
            for (int i = 0; i < Page.Controls.Count; i++)
            {
                foreach (System.Web.UI.Control control in Page.Controls[i].Controls)
                {
                    if (control is TextBox)
                    {
                        (control as TextBox).Text = "";
                    }
                }
            }
        }

JS版

<script language="javascript" type="text/javascript">
function ClearAll()
{
var temp=document.forms[0].elements;
for(var i=0;i <temp.length;i++)
{
if(temp[i].type=="text"||temp[i].type=="textarea")
{
temp[i].value="";
}
}
}
</script>

<input name="button" type="button" onclick="ClearAll()" value="清空" />

最直接的方法
<input type="reset" name="Submit" value="重置" />

7,public static const int A=1;有何错?为什么?
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

 
8,请用C#实现一个双向链表
/双向链表的示例,主要是LinkedList的底层实现方式,所以LinkedList插入和删除很快,不要移动数组
//而ArrayList是数组的维护,所以读取的速度很快的,而插入和删除要移动数组,所以很慢。这是两者的重要的区别。请特别注意。
class lianxi1
    {
        static void Main(string[] args)
        {
            LinkNodes <Int32> h1 = new LinkNodes <Int32>(1);
            h1.add(new LinkNodes <Int32>(2));
            h1.add(new LinkNodes <Int32>(3));
            int i = 0;
            while (i <9) //这是为了验证链表的
            {
                Console.WriteLine(h1.name);
                h1 = h1.next;
                i++;
            }
            Console.ReadKey();
        }
    }
    class LinkNodes <T>
    {
        public T name;//T用的是泛型的表示方式
        public LinkNodes <T> previous;
        public LinkNodes <T> next;

        public LinkNodes(T name)
        {
            this.name = name;
            next = this;
            previous = this;
        }
    //以下是仿照JAVA的源代码写出来的,有助于理解,加入的节点放在链表的最后一个位置
        //public LinkNodes(string name, LinkNodes ne, LinkNodes prev)
        //{
        //    this.name = name;
        //    next = ne;
        //    previous = prev;
        //}
        //public void add(LinkNodes para)
        //{
        //    addBefore(para, this);
        //}
        //private static void addBefore(LinkNodes para, LinkNodes header)
        //{
        //    LinkNodes innerClass = new LinkNodes(para.name, header, header.previous);
        //    innerClass.previous.next = innerClass;
        //    innerClass.next.previous = innerClass;
        //    innerClass = null;
        //}
    这是我理解后写的,代码少些,先把自己的上下连接做好,再去找链表中要修改的连接。
        public void add(LinkNodes <T> para)
        {
            para.next = this;
            para.previous = this.previous;

            para.previous.next = para;
            para.next.previous = para;
        }

        public bool delete(LinkNodes <T> para)
        {
            para.previous.next = para.next;
            para.next.previous = para.previous;
            para = null;
            return true;
        }
    }
 
9,能用foreach遍历访问的对象需要怎样实现?
    能用foreach遍历访问的对象需要实现IEnumerable接口或声明GetEnumerator方法的类型

      注:不一定要实现IEnumerable接口,但一定要实现GetEnumrator方法。

10,值类型与引用类型的区别。
直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。
在把数据赋给值类型和引用类型的时候,两者表现完全不同:
    在把数据赋给一个值类型时,数据存储在堆栈上的变量中。
  在把数据赋给一个引用类型时,变量中只存储一个引用,数据则存储在托管堆上。

11,asp.net的身份验证有哪些?

Windows 身份验证提供程序
提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。
Forms 身份验证提供程序
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
Passport 身份验证提供程序
提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置


[/Quote]
顶你,
zftow110 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hzzasdf 的回复:]
1.类实例.成员名,  静态类名.成员名,  通过属性访问
2.好象有内存和数据库两种模式
3.override的方法名和参数名和基类的方法都必须完全相同,overload则是至少有一个不同.override主要用于改变基类方法的行为,overload主要用于给用户提供多种形式的接口.
4.没看到过这种继承,大概不可以吧. 抽象类可以实现接口. 抽象类不能继承实体类
5.好象不可以吧
6.C#的写法不查书做不出来,好象js的写法是
var controls = document.getElementsByTag('INPUT');
for (i = 0; i < controls.length; i++)
{
  if (controls[i].type = "text")
      controls[i].value = "";
  }
7.static和const好象不能写在一起
8.定义一个类:
  public class MyClass
  {
    public MyClass PreClass{get;set;}
    public string Data{get;set;}
    public MyClass NextClass{get;set;}
  }
创建头结点:MyClass node = new MyClass();
          node.PreClass = null;
          node.NextClass = null;
增加一个结点:
          MyClass secondNode = new MyClass();
          node.NextClass = secondNode;
插入一个结点:比如要在Data值为"insertHere"的结点前插入:
          MyClass tnode = node;
          while (tnode.Data != "insertHere" && tnode.NextClass != null)
                tnode = tnode.NextClass;
        MyClass newnode = new MyClass();
        newnode.PreClass = tnode.PreClass;
        tnode.PreClass.NextClass = newnode;
        newnode.NextClass = tnode;
        tnode.PreClass = newnode;
9.需要实现IEnumerable接口
10.引用类型传的是地址
11.form, passport, windows, IIS
[/Quote]

play1982 2009-07-29
  • 打赏
  • 举报
回复
只会2 6 10 11 ,让我写还不一定能写出来,汗一个,飘过
walkghost 2009-07-29
  • 打赏
  • 举报
回复
汗,foreach是IEnumerator 。。。
我很多问题答得是驴头不对马嘴啊。面壁去了。
纯纯璐璐 2009-07-29
  • 打赏
  • 举报
回复
这些面试的时候我都遇到过,每次都感觉做的差不多,结果每次面试都没复试!
walkghost 2009-07-29
  • 打赏
  • 举报
回复
个人观点,欢迎拍砖:

1,类成员有哪几种可访问形式?
private,public,protected
2,session的存储模式有哪些?
inproc,session state service,sql server
3,override与overload的区别
overide在继承的子类里实现重写。overload是在同一类里写的方法名相同,但是参数不同,返回值也可能不同方法。
4,接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
可以,可以,不可以
5,C#是否可以对内存直接进行操作?如果可以,怎么来操作?
不可以吧。不知能操作。但是实际上如果我要是做着面试题的话,看这题目的意思应该是可以直接操作,但是怎么来操作,我不知道。
6,遍历页面TextBox并赋值String.Empty,请用C#与js实现
好变态的需求啊。如果是为了在ajax中的发送请求成功相应之后重设form内的所有空间,我感觉用form[i].reset()比较不错啊。
以前还真没做过这样的需求。
JS:

<script language="javascript" type="text/javascript">
// <!CDATA[

function Button2_onclick() {
var myOBJ =document.getElementsByTagName("input");

for(var i = 0;i < myOBJ.length;i++)
{

if(myOBJ[i].type == "text")
myOBJ[i].value="";
}

}

// ]]>
</script>


C#:

protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < form1.Controls.Count; i++)
{
if (form1.Controls[i].GetType() == typeof(TextBox))
{
TextBox tx=(TextBox)form1.Controls[i];
tx.Text = string.Empty;
}

}
}



7,public static const int A=1;有何错?为什么?
不允许在常数声明中使用 static 修饰符。
8,请用C#实现一个双向链表
没时间。
9,能用foreach遍历访问的对象需要怎样实现?
实现ICollection接口
10,值类型与引用类型的区别。
传递的时候,内存分配的时候==
11,asp.net的身份验证有哪些?
form,session.cookie.
  • 打赏
  • 举报
回复
不看书,只能写出这些.看来基础知识确实还需要巩固
accpyy 2009-07-29
  • 打赏
  • 举报
回复
晕啊 不会的好多!
  • 打赏
  • 举报
回复
1.类实例.成员名, 静态类名.成员名, 通过属性访问
2.好象有内存和数据库两种模式
3.override的方法名和参数名和基类的方法都必须完全相同,overload则是至少有一个不同.override主要用于改变基类方法的行为,overload主要用于给用户提供多种形式的接口.
4.没看到过这种继承,大概不可以吧. 抽象类可以实现接口. 抽象类不能继承实体类
5.好象不可以吧
6.C#的写法不查书做不出来,好象js的写法是
var controls = document.getElementsByTag('INPUT');
for (i = 0; i < controls.length; i++)
{
if (controls[i].type = "text")
controls[i].value = "";
}
7.static和const好象不能写在一起
8.定义一个类:
public class MyClass
{
public MyClass PreClass{get;set;}
public string Data{get;set;}
public MyClass NextClass{get;set;}
}
创建头结点:MyClass node = new MyClass();
node.PreClass = null;
node.NextClass = null;
增加一个结点:
MyClass secondNode = new MyClass();
node.NextClass = secondNode;
插入一个结点:比如要在Data值为"insertHere"的结点前插入:
MyClass tnode = node;
while (tnode.Data != "insertHere" && tnode.NextClass != null)
tnode = tnode.NextClass;
MyClass newnode = new MyClass();
newnode.PreClass = tnode.PreClass;
tnode.PreClass.NextClass = newnode;
newnode.NextClass = tnode;
tnode.PreClass = newnode;
9.需要实现IEnumerable接口
10.引用类型传的是地址
11.form, passport, windows, IIS
Hide1984 2009-07-29
  • 打赏
  • 举报
回复
有几道题目还是不错的~
zzxap 2009-07-29
  • 打赏
  • 举报
回复
1,类成员有哪几种可访问形式? this. ; new class().method;
2,session的存储模式有哪些?
mode="InProc"
其中默认的mode是InProc类型,这种模式和以前ASP模式一样,就是服务器将Session信息存储在IIS进程当中,当IIS关闭、重起后这些进程信息都会丢失,但这种模式的性能最高(具体没测,看书上说),这种模式是ASP.NET的默认方式。
mode="StateServer"
这种模式当我们重起IIS,保存的session值不会丢失。另外这种方式还可以把信息保存在其他机器的进程中,不过还要更改 stateConnectionString="tcpip=127.0.0.1:42424",IP地址改为其他机器即可。
mode="SQLServer"

3,override与overload的区别
OVERRIDE:重置,覆盖,使原来的失去效果。
OVERLOAD超载是指在同一可访问区内被声名的、几个、具有不同参数列的(参数类型/个数/顺序,不同)、同名函数,程序会根据不同的参数列来确定需要调用的函数
Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。
Overload返回值类型不同不能作为不同的两个函数,Override应该完全一样的返回类型。、

4,接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?
接口可以继承接口.抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数.

5,C#是否可以对内存直接进行操作?如果可以,怎么来操作?
非安全代码

非安全代码就是不在 CLR 完全控制下执行的代码,它有可能会导致一些问题,因此他们必须用 “unsafe” 进行表明:

unsafe
{
...
// unsafe context: can use pointers here
...
}

在其他一些地方也可以使用关键字 ‘unsafe’,例如我们可以将类或方法表明为非安全的:

unsafe class Class1 {}
static unsafe void FastMove ( int* pi, int* pdi, int length) {...}

‘unsafe’ 关键字的必要性是它可以防止程序员的一些意外的用法。你可能会问既然是不安全的为什么还有人要用它。答案就是有时候,在有些情况下,还需要用到指针。

6,遍历页面TextBox并赋值String.Empty,请用C#与js实现
C#版

void clean()//循环清空
{
for (int i = 0; i < Page.Controls.Count; i++)
{
foreach (System.Web.UI.Control control in Page.Controls[i].Controls)
{
if (control is TextBox)
{
(control as TextBox).Text = "";
}
}
}
}

JS版

<script language="javascript" type="text/javascript">
function ClearAll()
{
var temp=document.forms[0].elements;
for(var i=0;i<temp.length;i++)
{
if(temp[i].type=="text"||temp[i].type=="textarea")
{
temp[i].value="";
}
}
}
</script>

<input name="button" type="button" onclick="ClearAll()" value="清空" />

最直接的方法
<input type="reset" name="Submit" value="重置" />

7,public static const int A=1;有何错?为什么?
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:
const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:
文件指针可当作一个变量来看,与上面所说类似.
函数:
const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:
const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)
static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.


8,请用C#实现一个双向链表
/双向链表的示例,主要是LinkedList的底层实现方式,所以LinkedList插入和删除很快,不要移动数组
//而ArrayList是数组的维护,所以读取的速度很快的,而插入和删除要移动数组,所以很慢。这是两者的重要的区别。请特别注意。
class lianxi1
{
static void Main(string[] args)
{
LinkNodes<Int32> h1 = new LinkNodes<Int32>(1);
h1.add(new LinkNodes<Int32>(2));
h1.add(new LinkNodes<Int32>(3));
int i = 0;
while (i<9) //这是为了验证链表的
{
Console.WriteLine(h1.name);
h1 = h1.next;
i++;
}
Console.ReadKey();
}
}
class LinkNodes<T>
{
public T name;//T用的是泛型的表示方式
public LinkNodes<T> previous;
public LinkNodes<T> next;

public LinkNodes(T name)
{
this.name = name;
next = this;
previous = this;
}
//以下是仿照JAVA的源代码写出来的,有助于理解,加入的节点放在链表的最后一个位置
//public LinkNodes(string name, LinkNodes ne, LinkNodes prev)
//{
// this.name = name;
// next = ne;
// previous = prev;
//}
//public void add(LinkNodes para)
//{
// addBefore(para, this);
//}
//private static void addBefore(LinkNodes para, LinkNodes header)
//{
// LinkNodes innerClass = new LinkNodes(para.name, header, header.previous);
// innerClass.previous.next = innerClass;
// innerClass.next.previous = innerClass;
// innerClass = null;
//}
这是我理解后写的,代码少些,先把自己的上下连接做好,再去找链表中要修改的连接。
public void add(LinkNodes<T> para)
{
para.next = this;
para.previous = this.previous;

para.previous.next = para;
para.next.previous = para;
}

public bool delete(LinkNodes<T> para)
{
para.previous.next = para.next;
para.next.previous = para.previous;
para = null;
return true;
}
}

9,能用foreach遍历访问的对象需要怎样实现?
能用foreach遍历访问的对象需要实现IEnumerable接口或声明GetEnumerator方法的类型

注:不一定要实现IEnumerable接口,但一定要实现GetEnumrator方法。

10,值类型与引用类型的区别。
直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。
在把数据赋给值类型和引用类型的时候,两者表现完全不同:
在把数据赋给一个值类型时,数据存储在堆栈上的变量中。
在把数据赋给一个引用类型时,变量中只存储一个引用,数据则存储在托管堆上。

11,asp.net的身份验证有哪些?

Windows 身份验证提供程序
提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。
Forms 身份验证提供程序
提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。
Passport 身份验证提供程序
提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置

gdjlc 2009-07-29
  • 打赏
  • 举报
回复
上面这些题,搜索“asp.net面试题”里面就有一些
wo554006164 2009-07-29
  • 打赏
  • 举报
回复
不错,JF
  • 打赏
  • 举报
回复
万里长征第一步 我会的太少了
zhubo_1117 2009-07-29
  • 打赏
  • 举报
回复
基本上都会一点点
加载更多回复(12)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧