某公司全真.NET面试题,你都会吗?

148 阅读4分钟

前言

小编整理了某公司的.NET面试题,主要考察基础知识和逻辑思维。先列出试题大家想想,然后再给答案。

A、面试题目

1、请在括号内补充完整一个 EMAIL 正则表达式

private static Regex RegEmail = new Regex(" ");  

2、请说明以下代码的优点、作用以及定义

public enum DateInterval  
{  
    Second,  
    Minute,  
    Hour,  
}  

3、请指出以下代码需要完善修正的地方

string OldString = "";  
FileStream FileRead = new FileStream(Server.MapPath("upload/tmp"), FileMode.Open, FileAccess.ReadWrite);  
StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);  
OldString = FileReadWord.ReadToEnd().ToString();  
Response.Write(OldString);  

4、写一个无限级菜单的实现(包括数据库设计以及部分重要代码,可用文字描述)

5、把你平时使用的权限系统的实现原理以及重要代码写下来

6、SQL 语句中 IN / REPLACE / GROUP BY 的用法,以实例写出

7、现在有 2 个 TEXTBOX,要求鼠标移动到 TEXTBOX 范围内,弹出一个层,层里面的内容为 TEXTBOX 的值

8、如何在 .CS 代码里执行某个 ASPX 已存在的 JavaScript 方法

9、有一个字符串变量 sql,内容为 SQL 标准 SELECT 查询语句,现在通过转换字符串在不改变查询条件的情况下,通过变换字符串把此语句转换为 SELECT COUNT 语句,获取查询语句所查询的条数。

例如:"select * from table" 转换为 "select count (*) from table"

又例如:"select id from table where id>10 order by id desc" 转换为 "select count(id) from table where id>10"

需要考虑到各种查询情况

10、现在有一组数字,是 1 到 80,请在此数组中随机取出 10 个不能重复的数字,这 10 个数字相加的和在 250~300 之间,请写一个程序抽取这 10 个随机数字

提供以下代码:

Random objRand = new Random();  
objRand.Next(int minValue, int maxValue);  

B、面试题答案

1、EMAIL 正则表达式补充

private static Regex RegEmail = new Regex(@"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$");  

2、枚举代码的优点、作用以及定义

public enum DateInterval  
{  
    Second,  
    Minute,  
    Hour  
}  

优点: 可读性高、类型安全、方便维护。

作用: 表示一组相关但固定的常量值(如时间单位)。

3、指出代码需完善和修正的地方

修正代码:

string OldString = "";  
using (FileStream fileRead = new FileStream(Server.MapPath("upload/tmp"), FileMode.Open, FileAccess.Read))  
using (StreamReader fileReadWord = new StreamReader(fileRead, System.Text.Encoding.Default))  
{  
    OldString = fileReadWord.ReadToEnd();  
}  
Response.Write(OldString);  

4、无限级菜单的实现

数据库设计

CREATE TABLE Menu (  
    Id INT PRIMARY KEY,  
    ParentId INT NULL,  
    Name NVARCHAR(100),  
    Url NVARCHAR(200)  
);  

递归代码实现

public List<MenuItem> BuildMenu(List<MenuItem> menuItems, int parentId = 0)  
  {  
    return menuItems  
        .Where(item => item.ParentId == parentId)  
        .Select(item => new MenuItem  
        {  
            Id = item.Id,  
            Name = item.Name,  
            Url = item.Url,  
            Children = BuildMenu(menuItems, item.Id)  
        })  
        .ToList();  
  }  

5、权限系统的实现

实现原理 基于角色的权限控制(RBAC)。

关键代码

public bool CheckPermission(string userId, string requiredPermission)  
{  
  var userRoles = GetUserRoles(userId);  
  var permissions = GetPermissionsForRoles(userRoles);  
  return permissions.Contains(requiredPermission);  
}  

6、SQL 语句实例

IN

SELECT * FROM Users WHERE Id IN (123);  

REPLACE

SELECT REPLACE('Hello World''World''SQL'AS Result;  

GROUP BY

SELECT Department, COUNT(*AS EmployeeCount FROM Employees GROUP BY Department;  

7、鼠标悬浮弹出层

HTML

<input type="text" id="textbox1" value="Value 1" onmouseover="showTooltip(this)" />  
  <div id="tooltip" style="display:none;position:absolute;"></div>  

JavaScript

function showTooltip(input)
{  
  var tooltip = document.getElementById('tooltip');  
  tooltip.style.display = 'block';  
  tooltip.style.left = input.offsetLeft + 'px';  
  tooltip.style.top = input.offsetTop + input.offsetHeight + 'px';  
  tooltip.innerText = input.value;  
}  

8、在.CS 代码里执行 ASPX 的 JavaScript 方法

ClientScript.RegisterStartupScript(this.GetType(), "alert""alert('Hello, JavaScript!');"true);  

9、SELECT 转换为 SELECT COUNT

string sql = "SELECT id FROM table WHERE id > 10 ORDER BY id DESC";  
string countSql = Regex.Replace(sql, @"SELECT .*? FROM""SELECT COUNT(*) FROM", RegexOptions.IgnoreCase); 

10、随机抽取 10 个数字

Random random = new Random();  
List<int> numbers = Enumerable.Range(180).ToList();  
List<int> selectedNumbers;  
do  
{  
    selectedNumbers = numbers.OrderBy(x => random.Next()).Take(10).ToList();  
} while (selectedNumbers.Sum() < 250 || selectedNumbers.Sum() > 300);  
Console.WriteLine(string.Join(", ", selectedNumbers));  

上面的面试题你都会吗?如果还有需要补充或修改的地方,随时告诉我!希望这套题目能帮助你稳扎稳打地走向下一段职业旅程。祝你面试顺利,拿到心仪的 offer!

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!

作者: DotNet开发跳槽

出处:mp.weixin.qq.com/s/PMBwammP8og_T85fUYT2Xg

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!