本篇主要关注下,.net面试题中经常用的算法问题

1、有一群猴子,它们每天要吃桃子,它们第一天吃的数量是总量的一半再多一个,第二天吃的是第一天剩下的一半再多一个,第三天吃的是第二天剩下的一半多一个,以此类推直到第N天的时候只剩下一个桃子了,请问一共有多少桃子?用用递归算法实现

代码:

[code lang="csharp"]

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//假设猴子吃了一个月的桃子
for (int i = 0; i < 30; i++)
{
total = 1;
Test1(i);
}
Label1.Text = "30天前,这群猴子有" + total + "个桃子";
}
}

private static Int64 total;
//猴子吃桃的问题
private void Test1(int n)
{
//根据猴子吃桃的问题,可以表示成:n-n/2-1=m(m是剩余的,n是前一天剩余的总量)
//及:n=(m+1)*2
if (n > 0)
{
total = (total + 1) * 2;
n--;
Test1(n);
}
else
{
return;
}
}

[/code]

2、不准用系统函数,请写出一个函数,传入一个日期,判断是星期几?

代码:

[code lang="csharp"]

//每n-1月有多少天
private static int WhatMonthDay(int month, bool isLeapYear)
{
int result = 0;
switch (month)
{
case 1:
result = 0;
break;
case 2:
result = 31;
break;
case 3:
result = 31 + 28;
break;
case 4:
result = 31 + 28 + 31;
break;
case 5:
result = 31 + 28 + 31 + 30;
break;
case 6:
result = 31 + 28 + 31 + 30 + 31;
break;
case 7:
result = 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
result = 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
result = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
break;
case 10:
result = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
result = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
result = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
}
result = result + (isLeapYear == true ? 1 : 0);
return result;
}

// 不准用系统函数,请写出一个函数,传入一个日期,判断是星期几?大家有什么思路?
private static int WhatWeek(int year, int month, int day)
{
int temp = 1; //星期一
int basicYear = 1990; //1990年是闰年
int basicMonth = 01;
int basicDay = 01;

int yearGap = year - basicYear; //两个时间年的差距
int yearLeapCount = 0; //闰年的个数
int allday = 0;
if (yearGap % 4 == 0)
{
yearLeapCount = year - yearGap;
allday = yearLeapCount * (365 + 365 + 365 + 366) + WhatMonthDay(month, true) + day;
}
else
{
yearLeapCount = year - yearGap;
allday = (yearLeapCount - 1) * (365 + 365 + 365 + 366) + 365 * (yearGap % 4) + WhatMonthDay(month, false) +
day;
}
return allday % 7;//返回是星期几
}

[/code]

3、a=10,b=15,在不用第三方变题的前提下,把a,b的值互换

代码:

private static int[] NoChance()
{
int a = 10;
int b = 15;
b = b - a;
a = a + b;
b = a - b;
return new int[]{a,b};
}

4、session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法

ViewState、stateserver

5、对数据的并发采用什么办法进行处理较好

(1)最简单,最直接的方法,控制IIS连接数,但这个方法对公司平台不利,限制了用户的访问
(2)对不经常变动的内容,采用缓存减少查询数量,对经常需要查询的,采用nolock关键词进行查询,防止死锁。
(3)对数据库进行分库,分表,进行细化

(4)如有可能,对硬件进行提升。采用分布式和数据复制,对网站流量进行分流,把站点分布在不同的地区,指定区域访问指定服务器,根据不同地区的需求,对服务器进行配置,有效提升网络。
但不是说什么方法都是唯一的,真正用的时候,还是根据实际情况,多种方法结合使用,效果最好

6、当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法

(1)数据库死锁,有多条数据同时操作
(2)网络超时,无响应
(3)数据库磁盘空间不足

7、简述面向对象的多态的特性及意义

8、javascript问题,已知a,b,现在点鼠标a会向b游动,鼠标停,a会停下来

代码如下:

[code lang="csharp"]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>JavaScript</title>
<style>
html
{
background-color:silver;
}
.point1
{
position:absolute;
left:10px;
top:40px;

}
.point2
{
position:absolute;
left:100px;
top:40px;
}
.hr1
{
position:absolute;
top:60px;
}
</style>
<script type="text/JavaScript">
document.onmousedown = mousedown;
document.onmouseup = mouseup;
var intervalProcess;
var direct = true;
function mousedown() {
intervalProcess = setInterval("MovePoint()", 1);
}
function mouseup() {
clearInterval(intervalProcess);
}
function MovePoint() {
with (document.getElementById("point1").style) {
if (isNaN(parseInt(left)))
left = "10px";
else {
document.getElementById("point2").style.left = "200px";
if (parseInt(left) < 0)
direct = true;
if (parseInt(left) > parseInt(document.getElementById("point2").style.left))
direct = false;
if (direct)
left = parseInt(left) + 1 + "px";
else
left = parseInt(left) - 1 + "px";
}
}
}
</script>
</head>
<body>
<div class="point1" id="point1"><font color=blue>a</font></div>
<div class="point2" id="point2"><font color=red>b</font></div>
<hr class="hr1" />
</body>
</html>

[/code]

9、产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

//产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
private int[] Test()
{
int[] intArr=new int[100];
ArrayList tempArr=new ArrayList();
Random random=new Random();
while (tempArr.Count<100)
{
int temp = random.Next(1, 100);
if (!tempArr.Contains(temp))
{
tempArr.Add(temp);
}
}
for (int i = 0; i < tempArr.Count; i++)
{
intArr[i] = (int)tempArr[i];
}
return intArr;
}

10、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)

short s1 = 1; s1 += 1;(可以正确编译)

.net面试题汇总-第二篇的更多相关文章

  1. 【Java面试题系列】:Java基础知识常见面试题汇总 第二篇

    文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 第一篇链接:[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 1.JDK,JRE,JVM三者之间的联系和区别 你是否考虑过我们写的x ...

  2. Java基础知识常见面试题汇总第一篇

    [Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...

  3. 好程序员分享Web前端面试题汇总JS篇之跨域问题

    为什么80%的码农都做不了架构师?>>>   好程序员分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试题. 跨域解决方案 1. 通过jso ...

  4. 【Java面试题系列】:Java基础知识常见面试题汇总 第一篇

    文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后,一般都会让先做一份笔试题,然后公司会根据笔试题的回答结果,确定 ...

  5. [面试仓库]CSS面试题汇总--布局篇

    一,盒模型   说到 CSS 布局这块的内容,首当其冲的就是我们的盒模型宽度计算问题,在开始我们的问题之前,我们首先要搞懂这些概念: 盒模型里面的内容(content): 也就是实实在在要展现的内容, ...

  6. [面试仓库]CSS面试题汇总-定位篇

    一,relative.absolute 的区别   我们还是来说常见的地方.首先就是relative,absolute的区别: relative是依据自身来定位的 absolute则是依据离其最近一层 ...

  7. 秒杀多线程第一篇 多线程笔试面试题汇总 ZZ 【多线程】

    http://blog.csdn.net/morewindows/article/details/7392749 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些 ...

  8. php面试题汇总二(基础篇附答案)

    介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义 ...

  9. 【2017年新篇章】 .NET 面试题汇总(二)

    本次给大家介绍的是我收集以及自己个人保存一些.NET面试题第二篇 第一篇文章请到这里:[2017年新篇章] .NET 面试题汇总(一) 简介 此次包含的不止是.NET知识,也包含少许前端知识以及.ne ...

随机推荐

  1. GNU make(2)

    GNU make(2) 参考: GNU Make学习总结(二) 变量 变量由一个前导符号$加上字符或者是括号字符组成, 名称区分大小写. 命名: 习惯上用全部大写字符表示常量, 小写字符表示变量, 单 ...

  2. IIS应用程序池"启用32位"导致服务不可用的503错误

    原来运行正常的站点,突然不正常了,出现503错误.查看操作系统的日志查看器显示: 由于配置问题,无法加载模块 DLL“C:\Program Files (x86)\IIS\Asp.Net Core M ...

  3. tomcat假死现象 - 二

    1 编写背景 最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近又发现有台tomcat的应用出现了无法访问情况.简单描述下该台tomcat当时具体的表现:客户端请求没有响 ...

  4. 通过工厂模式批量创建对象后调用其中方法 出现XXXis not a function()问题原因

    //通过工厂模式批量创建 function Computer(color,weight,logo){         var obj=new Object();         obj.color=c ...

  5. HDU-2544-最短路(floyd)

    板子题,实验一下floyd. #include <cstdio> #include <algorithm> #include <cstring> using nam ...

  6. 使用Fiddler抓取IOS_APP的请求

    首先在地址https://www.telerik.com/fiddler 下载我们需要的fiddler 在新窗口中写上一些信息然后点击[Download for Windows]进行下载: 安装成功后 ...

  7. html块级元素和行级元素的区别和使用

    行内.块状元素区别: 1.行内元素与块级函数可以相互转换,通过修改display属性值来切换块级元素和行内元素,行内元素display:inline,块级元素display:block. 2.行内元素 ...

  8. 查找闲置ip

    首先ping 一下该网段的广播地址,如ping 192.168.0.255 ,然后使用arp -a就可以查看到那些地址是被使用的,以及网卡的mac值.剩余的是暂时还未被使用的,当然没开机的机器就看不出 ...

  9. 【01】markdown特殊说明

    [01]说明 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令 ...

  10. luogu1640 [SCOI2010]连续攻击游戏

    二分图匹配,一边是属性值,一边是武器 #include <iostream> #include <cstring> #include <cstdio> using ...