前言
小编整理了某公司的.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 (1, 2, 3);
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(1, 80).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
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!