面试题(2)—— 常见算法
-
查询出表中10-20条记录 、查询第m条到第n条记录:
select top n-m+1 * from test where (id not in(select top m-1 id from test)) -
查询出数组中第二大值
用两个变量max,max2,其中max储存最大值,max2储存第二大值
初始化的时候,将数组中的第一个元素中较大的存进max中,较小的存进max2中
然后从第三个元素(下标为2)的元素开始,如果遇到的数比max大,就让max2=max;max等于遇到的数一直循环,直到数组尾部最后输出max2 -
一个天秤,一个7克砝码,一个2克砝码,将150克食盐分成90克与50克
-
先把140克放在天平上分成相等两份各70克,再把其中70克同样平均分成两份各35克,35+7*2+2-1
-
第一次:先称 7+2克盐 (相当于有三个法码2,7,9)
第二次:称2+7+9=18克盐 (相当于有2,7,9,18四个法码)
第三次:称7+18=x+2,得出x是23,那就是有27克盐
23+9+18=50克盐.
4. 面试算法题 例如 输入123,输出321
5. 面试算法题 台阶一次只可以上一级或者两级,求 例如10级台阶有多少种上法
6.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
方法一:通过顺序规律写程序,同时也知道flag标志位的重要性
方法二:通过奇偶性
7. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
8. 一个6位数乘以一个3位数,得到一个结果。但不清楚6位数的两个数字是什么,而且结果中有一位数字也不清楚,请编程找出问号代表的数字,答案可能有多个
9. 已知1、1、1、2、3、5、8、13、21、34,....用C#递归写出算法,算出第30个数
10.有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"
11. C# 九九乘法表算法实现
12. 冒泡排序
13.选择排序
首先在未排序列中找到最小的元素,存放到排序序列的起始位置。然后在从剩余未排序元素中继续寻找最小的元素,放到排序序列末尾。以此类推,直到所有元素均排序完毕。
14.程序设计
问题:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒
思路:构造出Cat、Mouse、Master三个类,并能使程序运行;从Mouse和Master中提取抽象;联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒
这个例子可以看出 委托事件的应用是极其面向对象的,或者说很对象化
[csharp] view plain copy print?
namespace DelegateEvent
{
public delegate void SubEventHandler();
public abstract class Subject
{
public event SubEventHandler SubEvent;
protected void FireAway() //开火, 抽象类可以有具体方法。
{
if (this.SubEvent != null)
this.SubEvent();
}
}
public class Cat:Subject
{
public void Cry()
{
Console.WriteLine("cat cryed.")
this.FireAway();
}
}
public abstract class Observer //定义一个观察者的抽象类,这样的类有一点就是观察谁,这个谁肯定是一个类,这里指猫
{
public Observer(Subject sub) //抽象类也可以定义构造函数
{
sub.SubEvent +=new SubEventHandler(Respose); //注册猫叫事件(表达有点含糊),当此事件触发的时候,老鼠会做出回应
}
public abstract void Respose();
}
//定义一个观察者,老鼠
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject sub) //定义构造函数,并初始化父类
: base(sub)
{
this.name = name;
}
public override void Respose()
{
Console.WriteLine(name+" attempt to escape!");
}
}
//定义一个观察者,主人
public class Master : Observer
{
public Master(Subject sub) : base(sub) { }
public override void Respose()
{
Console.WriteLine("host waken");
}
}
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat); //在对象初始化的时候,已经注册了对猫叫的响应事件
Mouse mouse2 = new Mouse("mouse2",cat);
Master master = new Master(cat);
cat.Cry();
Console.Read();
}
}
}