11基本ASP.NET面试问题 *

total source的基本问题是最好的ASP.NET开发人员和工程师可以回答这个问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

聘请顶级ASP.NET开发人员
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, 金融专家, 产品经理, 和世界上的项目经理. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

面试问题

1.

ASP的用户.. NET页在字段中输入值, 下一个字段的选项卡, 注意到此时屏幕会刷新——加载图标会在浏览器选项卡中短暂显示. 在这个场景中,浏览器和/或服务器的幕后发生了什么?

View answer

程序员附加了回发事件处理程序,例如,使用 AutoPostBack 控件的属性. 当控件失去焦点(或值发生变化)时,页面中的一小部分JavaScript会使其提交表单, 比如用下拉控件). 然后服务器调用事件处理程序,该处理程序将页面重新呈现给浏览器.

2.

假设从 this question, 有什么替代方案仍然允许服务器端处理, 但不会刷新整个页面?

View answer

一种替代方法是部分回发,使用名为an的控件 UpdatePanel. 用这种技术, AJAX用于从客户机向服务器发出单独的请求, 哪一个不提交整个表格. 响应只重新呈现有问题的面板,而不是整个页面.

第二种技术是绕过原生ASP.使用jQuery或其他支持AJAX的方式编写自己的JavaScript代码.

3.

Does ASP.NET允许和/或要求程序员将HTML、JavaScript和c#保存在单独的文件中? 如果是这样,他们为什么要分开呢?

View answer

ASP.. NET使用一个称为 code behind 允许所有HTML标记在视图文件中(使用 .aspx 扩展),而行为是在单独的c#类(类)中定义的 后台代码的类, with the .aspx.cs extension). JavaScript通常也作为单独的文件提供.

把文件分开,这样负责视觉布局的人就可以只碰那个文件, 而另一个人可能负责c#中的编码行为. 布局和行为可以独立改变而不会相互影响. ASP.NET鼓励(但不强制)以这种方式进行分离.

申请加入Toptal的发展网络

并享受可靠、稳定、远程 自由ASP.NET开发人员职位

申请成为自由职业者
4.

web本质上是无状态的,ASP.. NET服务器创建新的 Page 每个Web Forms请求的实例. 描述创建有状态性的两种主要技术, 用于跨请求持久化数据,尽管有此限制. (一个是服务器端,一个是客户端.)

View answer

一种技术被称为 view state. 当你使用viewstate, 服务器端状态变量的集合被序列化并发送到一个隐藏的客户端表单字段. 当表单提交回服务器时, 序列化的字符串被重新膨胀,以形成服务器端状态变量的集合.

另一个技巧是 会话状态. 与用户会话关联的对象集合持久化在服务器内存或数据库中, 客户端cookie用于将每个用户会话映射到集合.

5.

Does ASP.NET允许和/或要求程序员在同一个文件中组合HTML、JavaScript和/或c#? 如果是这样,为什么它们要合并呢?

View answer

可以将这三种代码交织在一个文件中,甚至是在同一行代码中. 尽管有理由将它们分开,但也有理由将它们结合起来.

一个原因是能够在HTML中直接包含服务器计算的值. 这个例子展示了HTML中的c#表达式:

Today is <%=DateTime.Today.Format("M d, yyyy")%>

另一个原因是将服务器计算的值注入到JavaScript中. 这个c#示例导致浏览器在一秒钟后跳转到一个新页面:

Response.Write("");
6.

编译器能够知道页面上每个控件的名称和类型, 即使你从未在c#代码中声明过这些控件.

例如,假设您的HTML包含一个控件 , but no label3 control. 你可以参考 label2.Text 在c#代码中没有编译错误,但如果你试图引用 label3.Text,则会导致编译错误.

编译器是如何完成的呢?

View answer

Visual Studio分析 .aspx 页面并自动将声明生成到另一个文件中——开发人员很少检查这个文件. 使用分部类的机制,声明是同一个类的一部分.

7.

给出以下工具列表, languages, 以及可能用于web应用程序的技术:

  1. 确定哪些是类别
  2. 把剩下的放到你确定的类别中
  3. 非常简单地解释每个类别内的关系

以下是按字母顺序排列的列表,供您分类:

  • AJAX
  • 应用程序服务器
  • ASP.NET
  • Base64
  • Binary
  • Bootstrap
  • Browser
  • C#
  • Client
  • 客户端框架
  • 通信协议
  • 数据库服务器
  • HTTP
  • JavaScript
  • jQuery
  • JSON
  • .NET
  • Postback
  • 编程语言
  • 序列化格式
  • 服务器端框架
  • SQL
  • Technique
  • Tier
  • Validation
  • Visual Basic
  • Web Forms
  • XML
View answer

服务器端框架: .NET是微软一系列框架的名字. ASP.. NET是web相关技术的集合 .NET. Web Forms是该集合的一个子集,封装了特定的编程模型.

Tiers:在应用程序架构中有多个层次. 其中最常见的三个是数据库服务器, 应用程序服务器, 浏览器(也称为客户端).

通信协议层间通信的契约或风格. HTTP(或HTTPS)是客户机和应用服务器之间使用的协议.

序列化格式:数据如何在字节流和字节流之间转换. 格式包括JSON、二进制、XML和Base64(这些可以组合在一起). 这些是开放的解释,有些也可以被认为是编码方案.

编程语言:数据库服务器通常使用SQL语言. 应用层使用c#或Visual Basic语言(通常不混合使用)。. 浏览器使用JavaScript语言.

客户端框架浏览器层可能使用代码库或框架,通常由JavaScript和CSS组成. 列出的客户端框架是jQuery和Bootstrap.

Techniques这些项目都涉及到上述概念的不同组合:AJAX, postback, 和验证.

Note申请人不需要得出与这个列表完全相同的结论, 因为在术语上有一些歧义. 然而,对这些要点的讨论可以深入了解申请人的思维过程.

8.

你的网站需要一些重复. 特别是:

  • 相同的页眉和页脚将出现在大多数页面上
  • 有些页面需要标题的精简版本
  • “立即捐赠”按钮和图片将只在其中四个页面上重复使用

您不希望重复代码, 对于每一个元素, 如何一次写完,然后在很多页上出现?

View answer

对于页眉和页脚,您可以使用母版页来定义模板. 然后,每个内容页都可以引用母版页,而不是重复页眉和页脚.

对于少数需要压缩页眉的页面,您可以使用单独的母版页.

对于捐赠按钮,您将使用用户控件.

9.

应用程序中的页面显示客户端列表, 每个都呈现为指向客户端详细信息页面的链接. 虽然大多数链接都有效, 报告了一个仅影响包含&字符的客户端名称的错误, 比如“威利” & Sons”. 对于这些客户, 当你点击链接的时候, 客户端详细信息页面只显示“Wiley”,并删除了客户端名称的其余部分.

为什么会发生这种情况?? 给出有关从列表页到详细页面的链接的技术细节.

View answer

粗心的程序员忘记在链接的“href”属性中对URL进行URL编码. 例如,链接可能在最终的HTML中被错误地呈现为:

Detail for Wiley & Sons

但是,服务器会解释 & 字符作为URL参数之间的分隔符. 正确的url编码版本如下:

Detail for Wiley & Sons
10.

您从测试人员那里得到的对bug的分析有什么错误或可疑之处? 你觉得问题出在哪里?

数据库有问题. 我们可以在纸上重现这个问题 CustomerEdit.aspx. 每当用户编辑客户记录并错误格式化电话号码时, 并单击Save, 它显示了一个错误页面. 发生错误是因为浏览器向数据库发送了一个PUT请求, 但是客户表需要一个格式正确的电话号码. 如果格式错误,有时会出现SQL错误. 页面显示“无效索引:-1”. 另外,如果我查询客户表,有些电话号码的格式不正确.

View answer

有几种说法表明测试人员没有很好地理解情况:

  • 浏览器几乎不会直接与数据库通信.
  • The HTTP PUT 动词不太可能与ASP一起使用.NET Web Forms.
  • 这不太可能是数据库错误,因为:
    1. 在数据库级别实现电话号码格式化是可能的,但不常见
    2. 如果它是在那个层次上实施的, 它不太可能以允许一些格式错误的值进入数据库的方式中断
    3. 错误消息看起来不像数据库服务器发出的消息

错误消息表明服务器和/或客户端存在代码错误, 哪个更可能与电话号码验证功能相关. 具体来说,可能是检查失败 -1 的结果 IndexOf 方法(或 indexOf 在JavaScript中).

11.

您正在开发一个时间表输入页面,看起来像这样:

A timesheet entry page consisting of a client dropdown at the top and a variable-length list of time entries; each row contains a description textbox, 计费复选框, 和hours文本框

当您实现一些服务器端行为以响应在客户端下拉菜单中选择项时, 一个新的bug突然出现了. 可以通过选中一些复选框,然后选择不同的客户机来复制该错误. 然后,之前选中的复选框将被清除. 为什么会发生这种情况??

View answer

原因很可能是将回发事件添加到客户机下拉列表中, 导致页面刷新, 但是复选框的视图状态没有正确地进行往返. 也就是说, 这些值没有包含在提交给服务器回发的表单中, 和/或在页面刷新期间不重新渲染.

页面的需求有一些复杂之处,使这种情况成为可能:

  1. 复选框只在被选中时向服务器发送值,在被清除时被省略. 所有其他输入类型总是发送值.
  2. 当一个页面需要一个可变长度的控件列表时,就很难留在ASP中.. NET编程模型, 因此,程序员可能会以一种不参与值往返的方式通过代码发出控件.

面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. 一天结束的时候, 招聘仍然是一门艺术,一门科学,需要大量的工作.

Why Toptal

厌倦了面试候选人? 不知道该问什么才能让你得到一份好工作?

让Toptal为你找到最合适的人.

聘请顶级ASP.NET开发人员

我们的独家网络ASP.网络开发人员

想找一份ASP的工作.网络开发人员?

让Toptal为你找到合适的工作.

作为ASP申请.网络开发人员

工作机会从我们的网络

提出面试问题

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, 由Toptal全权决定, LLC.

*所有字段均为必填项

寻找ASP.网络开发人员?

Looking for ASP.网络开发人员? 查看Toptal的ASP.网络开发人员.

Dmitry Pavlov

自由ASP.网络开发人员

RussiaToptal成员 Since 2012年7月16日

Dmitry是一位拥有20多年创作经验的顶尖开发者 .. NET web应用程序. 他主要和ASP打交道.. NET Core和Blazor (c#, .. NET Core)软件开发和体系结构设计. Dmitry曾9次获得微软MVP(开发者技术)奖,是一位有能力的社区领袖. 他还获得了计算机科学、构造地质学和建模的硕士学位. 客户称他为“编码机器”."

Show More

谢丽尔·霍斯金斯

自由ASP.网络开发人员

美国Toptal成员 Since 2016年2月4日

谢丽尔是一名具有强大沟通技巧的开发人员,她寻求提供令客户满意的软件解决方案. 她喜欢使用React、Node.js, REST APIs, GraphQL, SQL, MongoDB, 和JavaScript最近准备开始把她的技能为你工作. 除了她的技术背景, Cheryl拥有MBA学位,可以将您的业务需求转化为高质量的软件解决方案.

Show More

Mihael Pejak

自由ASP.网络开发人员

CroatiaToptal成员 Since 2016年12月30日

michael已经做了10多年的开发人员,有7年以上的开发经验 .. NET框架,大型系统集成,以及各种行业的企业解决方案. 他还拥有信息系统硕士学位. 他专门从事企业级应用程序开发 .NET platform. michael参与过许多成功交付的项目,包括前端和后端.

Show More

Toptal连接 Top 3% 世界各地的自由职业人才.

加入Toptal社区.

Learn more
\");\n\n","identifier":3278935},{"questionBody":"

编译器能够知道页面上每个控件的名称和类型, 即使你从未在c#代码中声明过这些控件.

\n\n

例如,假设您的HTML包含一个控件 , but no label3 control. 你可以参考 label2.Text 在c#代码中没有编译错误,但如果你试图引用 label3.Text,则会导致编译错误.

\n\n

编译器是如何完成的呢?

\n","answerBody":"

Visual Studio分析 .aspx 页面并自动将声明生成到另一个文件中——开发人员很少检查这个文件. 使用分部类的机制,声明是同一个类的一部分.

\n","identifier":3278936},{"questionBody":"

给出以下工具列表, languages, 以及可能用于web应用程序的技术:

\n\n
    \n
  1. 确定哪些是类别
  2. \n
  3. 把剩下的放到你确定的类别中
  4. \n
  5. 非常简单地解释每个类别内的关系
  6. \n
\n\n
\n\n

以下是按字母顺序排列的列表,供您分类:

\n\n\n","answerBody":"

服务器端框架: .NET是微软一系列框架的名字. ASP.. NET是web相关技术的集合 .NET. Web Forms是该集合的一个子集,封装了特定的编程模型.

\n\n

Tiers:在应用程序架构中有多个层次. 其中最常见的三个是数据库服务器, 应用程序服务器, 浏览器(也称为客户端).

\n\n

通信协议层间通信的契约或风格. HTTP(或HTTPS)是客户机和应用服务器之间使用的协议.

\n\n

序列化格式:数据如何在字节流和字节流之间转换. 格式包括JSON、二进制、XML和Base64(这些可以组合在一起). 这些是开放的解释,有些也可以被认为是编码方案.

\n\n

编程语言:数据库服务器通常使用SQL语言. 应用层使用c#或Visual Basic语言(通常不混合使用)。. 浏览器使用JavaScript语言.

\n\n

客户端框架浏览器层可能使用代码库或框架,通常由JavaScript和CSS组成. 列出的客户端框架是jQuery和Bootstrap.

\n\n

Techniques这些项目都涉及到上述概念的不同组合:AJAX, postback, 和验证.

\n\n

Note申请人不需要得出与这个列表完全相同的结论, 因为在术语上有一些歧义. 然而,对这些要点的讨论可以深入了解申请人的思维过程.

\n","identifier":3278937},{"questionBody":"

你的网站需要一些重复. 特别是:

\n\n\n\n

您不希望重复代码, 对于每一个元素, 如何一次写完,然后在很多页上出现?

\n","answerBody":"

对于页眉和页脚,您可以使用母版页来定义模板. 然后,每个内容页都可以引用母版页,而不是重复页眉和页脚.

\n\n

对于少数需要压缩页眉的页面,您可以使用单独的母版页.

\n\n

对于捐赠按钮,您将使用用户控件.

\n","identifier":3278938},{"questionBody":"

应用程序中的页面显示客户端列表, 每个都呈现为指向客户端详细信息页面的链接. 虽然大多数链接都有效, 报告了一个仅影响包含&字符的客户端名称的错误, 比如“威利” & Sons”. 对于这些客户, 当你点击链接的时候, 客户端详细信息页面只显示“Wiley”,并删除了客户端名称的其余部分.

\n\n

为什么会发生这种情况?? 给出有关从列表页到详细页面的链接的技术细节.

\n","answerBody":"

粗心的程序员忘记在链接的“href”属性中对URL进行URL编码. 例如,链接可能在最终的HTML中被错误地呈现为:

\n\n
Detail for Wiley & Sons\n
\n\n

但是,服务器会解释 & 字符作为URL参数之间的分隔符. 正确的url编码版本如下:

\n\n
Detail for Wiley & Sons\n
\n","identifier":3278939},{"questionBody":"

您从测试人员那里得到的对bug的分析有什么错误或可疑之处? 你觉得问题出在哪里?

\n\n

数据库有问题. 我们可以在纸上重现这个问题 CustomerEdit.aspx. 每当用户编辑客户记录并错误格式化电话号码时, 并单击Save, 它显示了一个错误页面. 发生错误是因为浏览器向数据库发送了一个PUT请求, 但是客户表需要一个格式正确的电话号码. 如果格式错误,有时会出现SQL错误. 页面显示“无效索引:-1”. 另外,如果我查询客户表,有些电话号码的格式不正确.

\n","answerBody":"

有几种说法表明测试人员没有很好地理解情况:

\n\n\n\n

错误消息表明服务器和/或客户端存在代码错误, 哪个更可能与电话号码验证功能相关. 具体来说,可能是检查失败 -1 的结果 IndexOf 方法(或 indexOf 在JavaScript中).

\n","identifier":3278940},{"questionBody":"

您正在开发一个时间表输入页面,看起来像这样:

\n\n

\"A

\n\n

当您实现一些服务器端行为以响应在客户端下拉菜单中选择项时, 一个新的bug突然出现了. 可以通过选中一些复选框,然后选择不同的客户机来复制该错误. 然后,之前选中的复选框将被清除. 为什么会发生这种情况??

\n","answerBody":"

原因很可能是将回发事件添加到客户机下拉列表中, 导致页面刷新, 但是复选框的视图状态没有正确地进行往返. 也就是说, 这些值没有包含在提交给服务器回发的表单中, 和/或在页面刷新期间不重新渲染.

\n\n

页面的需求有一些复杂之处,使这种情况成为可能:

\n\n
    \n
  1. 复选框只在被选中时向服务器发送值,在被清除时被省略. 所有其他输入类型总是发送值.
  2. \n
  3. 当一个页面需要一个可变长度的控件列表时,就很难留在ASP中.. NET编程模型, 因此,程序员可能会以一种不参与值往返的方式通过代码发出控件.
  4. \n
\n","identifier":3278941}],"publicUrl":"http://chgd.ngskmc-eis.net/asp-dot-net/interview-questions","tabsSection":{"selectedTab":"client","items":[{"type":"client","label":"I'm hiring","activeIconUrl":"http://bs-uploads.toptal.io/blackfish-uploads/components/interview_questions_page/tabs_section/item/content/active_icon_file/active_icon/822463/ICON_TALENT__ACTIVE__2x-64d6654dfad0c04528a0525c494b144f.png","inactiveIconUrl":"http://bs-uploads.toptal.io/blackfish-uploads/components/interview_questions_page/tabs_section/item/content/inactive_icon_file/inactive_icon/822464/ICON_TALENT__NON_ACTIVE__2x-8710ec2d9e5d5ba4f8f684771a271d5b.png"},{"type":"talent","label":"我在找工作","activeIconUrl":"http://bs-uploads.toptal.io/blackfish-uploads/components/interview_questions_page/tabs_section/item/content/active_icon_file/active_icon/822461/ICON_CLIENT__ACTIVE__2x-9b251ec42929b7b96f7e20473b501eae.png","inactiveIconUrl":"http://bs-uploads.toptal.io/blackfish-uploads/components/interview_questions_page/tabs_section/item/content/inactive_icon_file/inactive_icon/822462/ICON_CLIENT__NON_ACTIVE__2x-de363650453eabe3d2c4e70e75deaaad.png"}]},"heroSection":{"title":"11基本ASP.NET面试问题","subtitle":"total source的基本问题是最好的ASP.NET开发人员和工程师可以回答这个问题. Driven from our community, we encourage experts to submit questions and offer feedback.","cta":{"label":"Submit an Interview Question","href":"#submit-question"},"ctas":{"client":{"label":"聘请顶级ASP.NET开发人员","href":"http://chgd.ngskmc-eis.net/hire?interested_in=developers&skill=asp-dot-net&skill_job_title=ASP.NET+Developer"},"talent":{"label":"作为ASP申请.网络开发人员","href":"http://chgd.ngskmc-eis.net/talent/apply?as=developers"}},"eatBadgeSection":{"iconUrl":"http://bs-uploads.toptal.io/blackfish-uploads/components/eat_badge_section/content/icon_file/icon/1240878/toptal_logo_white_mono-df3f70ab3f3d7bf2e75fbe7a95401562.svg","label":"是顶级自由软件开发人员的专属网络吗, designers, 金融专家, 产品经理, 和世界上的项目经理. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目."}},"featuredContributors":null,"questionsSection":{"note":"面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. 一天结束的时候, hiring remains an art, a science — and a lot of work.","banner":{"title":"申请加入Toptal的发展网络","subtitle":"并享受可靠、稳定、远程 自由ASP.网络开发人员 Jobs","cta":{"label":"申请成为自由职业者","href":"/talent/apply","gaCategory":"cta","gaEvent":"cta - interview_questions_block","gaLabel":"Apply to 自由ASP.网络开发人员 Jobs"}}},"authorSection":null,"successStorySection":null}