㈠ 求程序员--笔试面试题库
ASP.Net程序员测试题
一、数据库部分:
数据库中有以下几个表
Customers(客户信息)
列名称 含义 数据类型 可空 是主键 是外键 默认值
Customer_ID 客户编号 int(自动增长) N Y N 无
Customer_Name 客户名称 nvarchar(30) N N N 无
Procts(商品信息)
列名称 含义 数据类型 可空 是主键 是外键 默认键
Procts _ID 客户编号 int(自动增长) N Y N 无
Procts _Name 客户名称 nvarchar(100) N N N 无
Unit_Price 单价 decimal(7,2) N N N 无
Orders(订单信息)
列名称 含义 数据类型 可空 是主键 是外键 默认键
Order _ID 订单编号 int(自动增长) N Y N 无
Order _Date 订单日期 smalldatetime N N N DETDATEO
Customer_Price客户编号 int N N Y 无
OrderDetails(订单详细内容)
列名称 含义 数据类型 可空 是主键 是外键 默认键
Order _ID 订单编号 int(自动增长)N Y Y 无
Proct _ID 商品编号 smalldatetime N Y Y 无
Proct_Quantity商品数量 int N N N 1
问题如下
1.Orders表Order_Date字段的默认值GETDATEO是什么意思?
2.查询商品信息表中的商品总数量,各种商品平均单价。
3.查询用户名称为“张三”,订单日期为2005-8-30日的订单总金额。
4.查询商品名称为“联想电脑”的商品在2005-7-1日至2005-7-31之间每天的销售明细(要求显示日期、当日的销售总量)。
二、C#语法题
1.C#中所有类的基类是什么?
2.计算n+(n-1)+(n-2)+…+1(n=100)。
3.请阅读以下代码,并求出结果。
Int iResult=0;
Int iTemp=0;
for(int i=0;i+=2)
{
iResult+=i;
}
While(iTemp<3)
{
iResult-=iTemp;
iTemp++;
}
请问iResult的值为多少?
4.override与重载有什么区别?
5.阅读以下代码,然后回答问题
Private int Division(int x,int y)
{
return x/y;
}
请问该函数被调用时是否可能会出现问题?如果有问题请修改该函数。
6.public class A
{
private string_value=“”;
public A(string value)
{
This._value=value;
}
}
Public class B:A
{
//想在构造类B的同时初始化类A中的_value字段?
}
想在构造类B的同时初始化类A中的_value字段,是否可以实现?如果可以实现,请补充类B的代码。
7.public sealed class A
{
……
}
请问代码中的sealed是什么意思?
8.请问Session 和Application各在什么场合下使用(最好举例说明)
9.请问您在什么情况下会用到虚方法?它与接口方法有什么不同?
10.请列举二个您用到过的设计模式?
11.请列举一些ASP.Net中支持数据绑定的控件,您经常使用哪些?
12.页面上有一个input框的名字为txtPrice,请在提交前验证该控件中的内容(不能为空,必须是整数,用javascript验证)。
13.请问重定向页面有几种方法?
你可以试着做做看,公司出的题应该都不一样的,希望对你有所帮助!
㈡ 程序员题库app有哪些
可以装个应用宝在手机上
然后选择上方的空白框,输入要下载的应用和手游名
然后找到了应用或者手游后,直接进行下载安装就可以了
㈢ 初级程序员考试内容
主要考试科目是两科:上午是综合知识,75道单选题;下午是应用技术,5道案例题,主要考流程图1题,C语言3题,C++和JAVA二选一,以填空题和选择题为主。
㈣ c++经典面试题及答案
1. C++的类和C里面的struct有什么区别?
struct成员默认访问权限为public,而class成员默认访问权限为private
2. 析构函数和虚函数的用法和作用
析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
3. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
1) 全局变量的作用用这个程序块,而局部变量作用于当前函数
2) 前者在内存中分配在全局数据区,后者分配在栈区
3) 生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁,局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在
4) 使用方式不同:通过声明后全局变量程序的各个部分都可以用到,局部变量只能在局部使用
4. 有N个大小不等的自然数(1–N),请将它们由小到大排序.要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
void sort(int e[], int n)
{
int i;
int t;
for (i=1; i {
t = e[e[i]];
e[e[i]] = e[i];
e[i] = t;
}
}
5. 堆与栈的去区别
A. 申请方式不同
Stack由系统自动分配,而heap需要程序员自己申请,并指明大小。
B. 申请后系统的响应不同
Stack:只要栈的剩余空间大于申请空间,系统就为程序提供内存,否则将抛出栈溢出异常
Heap:当系统收到程序申请时,先遍历操作系统中记录空闲内存地址的链表,寻找第一个大于所申请空间的堆结点,然后将该结点从空间结点链表中删 除,并将该结点的空间分配给程序。另外,大多数系统还会在这块内存空间中的首地址处记录本次分配的大小,以便于delete语句正确释放空间。而且,由于 找到的堆结点的大小不一定正好等于申请的大小,系统会自动将多余的那部分重新放入空闲链表。
C. 申请大小限制的不同
Stack:在windows下,栈的大小是2M(也可能是1M它是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
Heap:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
D. 申请效率的比较:
栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是在栈是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。
E. 堆和栈中的存储内容
栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器 中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开 始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
堆:一般是在堆的.头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
6. 含参数的宏与函数的优缺点
宏: 优点:在预处理阶段完成,不占用编译时间,同时,省去了函数调用的开销,运行效率高
缺点:不进行类型检查,多次宏替换会导致代码体积变大,而且由于宏本质上是字符串替换,故可能会由于一些参数的副作用导致得出错误的结果。
函数: 优点:没有带参数宏可能导致的副作用,进行类型检查,计算的正确性更有保证。
缺点:函数调用需要参数、返回地址等的入栈、出栈开销,效率没有带参数宏高
PS:宏与内联函数的区别
内联函数和宏都是在程序出现的地方展开,内联函数不是通过函数调用实现的,是在调用该函数的程序处将它展开(在编译期间完成的);宏同样是;
不同的是:内联函数可以在编译期间完成诸如类型检测,语句是否正确等编译功能;宏就不具有这样的功能,而且宏展开的时间和内联函数也是不同的(在运行期间展开)
7. Windows程序的入口是哪里?写出Windows消息机制的流程
Windows程序的入口是WinMain()函数。
Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理。
8. 如何定义和实现一个类的成员函数为回调函数
A.什么是回调函数?
简而言之,回调函数就是被调用者回头调用调用者的函数。
使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个被调用函数。而该被调用函数在需要的时候,利用传递的地址调用回调函数。
回调函数,就是由你自己写的,你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。
B.如何定义和实现一个类的成员函数为回调函数
要定义和实现一个类的成员函数为回调函数需要做三件事:
a.声明;
b.定义;
c.设置触发条件,就是在你的函数中把你的回调函数名作为一个参数,以便系统调用
如:
一、声明回调函数类型
typedef void (*FunPtr)(void);
二、定义回调函数
class A
{
public:
A();
static void callBackFun(void) //回调函数,必须声明为static
{
cout<<"callBackFun"<
}
virtual ~A();
};
三、设置触发条件
void Funtype(FunPtr p)
{
p();
}
void main(void)
{
Funtype(A::callBackFun);
}
C. 回调函数与API函数
回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反, 他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它 通过一个函数指针来保存这个回调函数,在需要调用时,只需引用这个函数指针和相关的参数指针。
其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数。
㈤ (特急)《Java程序设计》理论题库—判断题(要准确答案)
异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。
摘要:《Java程序员面试指南》第7章异常处理及内存管理,本章讲述的是要想成功地成为一名合格的Java程序员,掌握好异常处理机制是编写大型程序必不可少的基本功。本节为大家介绍异常的处理方式之三:throw。
标签:throw Java 程序员 Java程序员面试指南
Oracle帮您准确洞察各个物流环节
7.4 异常的处理方式之三:throw(1)
异常的抛出,就是将异常抛给异常处理器,暂时不去处理它。本节主要讲解用throw抛出异常的方式,以及如何由try-catch来接收所抛出的异常。
当一个方法发生异常时可以通过throw关键字来抛出异常,把异常抛给它上一级的调用者,抛出的可以是异常引用,也可以是异常对象,它的语法格式如下:
throw 异常对象名; 或者
throw new 异常类名(); 一条throw语句一旦被执行,程序立即转入相应的异常处理程序段,它后面的语句就不再执行了(这一点类似于return语句),而且它所在的方法也不再返回有意义的值。在一个方法中,throw语句可以有多条,但每一次最多只能执行其中的一条。在一般情况下,throw语句都会写在判断语句块中,以避免每次都执行该语句。
【代码剖析】下面来看一个例子,也许从中你会明白点什么。具体代码如下:
public class catchThows { static int x; public static void main(String argv[]) { double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else throw new Exception(); // 抛出异常 } public void setX(int x) { this.x = x; } } 运行结果如图7.1所示。
(点击查看大图)图7.1 运行结果
从上面的运行结果中可以看出,一个方法中如果使用throw来抛出异常,要么自己捕获它,要么声明抛出了一个异常。要声明抛出了异常,需要用throws关键字在方法的头部声明。如果我们将上面的代码修改成下面的代码,那么结果又会怎样呢?
public class catchThows_1 { static int x; public static void main(String argv[]) { new catchThows().setX(0); double a = Math.random() * 10; if (x > 0) System.out.println(a / x); else try { throw new Exception();// 抛出异常 } catch (Exception e) { System.out.println("出现异常的原因是:"+e.getMessage()); } } public void setX(int x) { this.x = x; } } 运行结果如下:
出现异常的原因是:null 还有一种抛出异常的方法是让被调用的方法表示它将不处理异常,该异常将被抛出到它的调用方法中。这点是和throws声明异常很相似的,但它们的位置是完全不同的。具体代码如下:
public class catchThows_2 { void findThows() { try { //抛出方法 throw new ArithmeticException(); } catch(ArithmeticException ae) { throw ae; } } public static void main(String args[]) { catchThows ct=new catchThows(); //对方法进行异常处理 try { ct.findThows(); } catch(ArithmeticException ae) { System.out.println("出现异常的原因是:"+ae); } } } 运行结果如下:
出现异常的原因是:java.lang.ArithmeticException
【责任编辑:云霞 TEL:(010)68476606】
回书目 上一节 下一节
上一篇: 7.3 异常的处理方式之二:throws(2) 下一篇: 7.4 异常的处理方式之三:throw(2)
相关文章
·7.5 内存的管理(2)
·7.4 异常的处理方式之三:throw(2)
·17.3 Java高级编程试题(1)
·17.1 Java基础编程试题(6)
·17.1 Java基础编程试题(5)
频道热门
·自己动手写搜索引擎
·1.1.2 编写代码(15分钟)
·1.1.1 准备工作环境(10分钟)
·软件调试的艺术
·WCF编程(第2版)
㈥ 程序员面试问题及答案
程序员面试问题及答案
程序员是从事程序开发、维护的专业人员。我整理的程序员面试问题及答案,希望大家喜欢!
1、两柱香问题
题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切。
解答:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半个小时,同时也说明甲香也正好燃烧了一半,此时,将甲香的另一头点着,从此时起到甲香完全烧完,正好15分钟。
2、灯管问题
在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?
解答:打开一盏灯10分钟,关掉,打开第二盏,进去看看哪盏亮,摸摸哪盏热,热的是第一个打开的开关开的,亮的是第二个开关开的',另一个就是第三个。
3、两位盲人问题
他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。 他们每人怎样才能取回黑袜和白袜各两对呢?
答案:每一对分开,一人拿一只,因为袜子不分左右脚的;
4、果冻问题
你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,同时抓取两个果冻。抓取多少个就可以确定你肯定有两个同一颜色的果冻?
答案:2次4个!
5、喝啤酒问题
假如每3个空啤酒瓶可以换一瓶啤酒,某人买了10瓶啤酒,那么他最多可以喝到多少瓶啤酒?
答案:喝完10瓶后用9个空瓶换来3瓶啤酒(喝完后有4个空瓶)喝完这三瓶又可以换到1瓶啤酒(喝完后有2个空瓶),这时他有2个空酒瓶,如果他能向老板先借一个空酒瓶,就凑够了3个空瓶可以换到一瓶啤酒,把这瓶喝完后将空瓶还给老板就可以了。
所以他最多可以喝10+3+1+1=15瓶
6、三人住旅馆
有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30,第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人,谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那么还有$1呢?
答案:他们所消费的27元里已经包括小弟的2元了,再加退还的3元=30元。这种题一定不要乱了阵脚,根据一条思路做:这30元现在的分布是:老板拿25元,伙计拿2元,三人各拿1元,正好!
7、三筐苹果问题
有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(就是说筐上的标签都是错的)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。
答案:从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。
分析:从混合的拿出一个来,如果是苹果,而贴苹果的筐里有可能是橘子和混合,如果是混合,说明贴橘子的筐里是橘子,不成立(因为前提说了,每个标签都是错的)。所以贴苹果的筐里是橘子,则贴橘子的筐里是混合。
8、汽车加油问题
一辆载油500升的汽车从A开往1000公里外的B,已知汽车每公里耗油量为1升,A处有无穷多的油,其他任何地点都没有油,但该车可以在任何地点存放油以备中转,问从A到B最少需要多少油
解答:严格证明该模型最优比较麻烦,但确实可证,大胆猜想是解题关键。题目可归结为求数列an=500/(2n 1) n=0,1,2,3......的和Sn什么时候大于等于1000,解得n>6当n=6时,S6=977.57,所以第一个中转点离起始位置距离为1000-977.57=22.43公里.所以第一次中转之前共耗油22.43*(2*7 1)=336.50升此后每次中转耗油500升,所以总耗油量为7*500 336.50=3836.50升。
9、两个人猜数问题
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数, 甲说:“我猜不出”, 乙说:“我猜不出”, 甲说:“我猜到了”, 乙说:“我也猜到了”, 问这两个数是多少?
解答:3和4。设两个数为n1,n2,n1> =n2,甲听到的数为n=n1 n2,乙听到的数为m=n1*n2,证明n1=3,n2=4是唯一解。证明:要证以上命题为真,不妨先证n=7
1)必要性:
i) n> 5 是显然的,因为n <4不可能,n=4或者n=5甲都不可能回答不知道
ii) n> 6 因为如果n=6的话,那么甲虽然不知道(不确定2 4还是3 3)但是无论是2,4还是3,3乙都不可能说不知道(m=8或者m=9的话乙说不知道是没有道理的)
iii) n <8 因为如果n> =8的话,就可以将n分解成 n=4 x 和 n=6 (x-2),那么m可以是4x也可以是6(x-2)而4x=6(x-2)的必要条件是x=6即n=10,那样n又可以分解成8 2,所以总之当n> =8时,n至少可以分解成两种不同的合数之和,这样乙说不知道的时候,甲就没有理由马上说知道。以上证明了必要性。
2)充分性
当n=7时,n可以分解成2 5或3 4
显然2 5不符合题意,舍去,容易判断出3 4符合题意,m=12,证毕
于是得到n=7 m=12 n1=3 n2=4是唯一解。
10、猴子吃香蕉问题
一个小猴子边上有100 根香蕉,它要走过50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。
解答:设 小猴从0 走到50, 到A 点时候他可以直接抱香蕉回家了, 可是到A 点时候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一个限制就是小猴只能抱50 只香蕉, 那么在A 点小猴最多49 只香蕉.100-3A=49, 所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.
㈦ 《挑战编程技能57道程序员功力测试题》pdf下载在线阅读全文,求百度网盘云资源
《挑战编程技能》(Brian P. Hogan)电子书网盘下载免费在线阅读
链接:
书名:挑战编程技能
作者:Brian P. Hogan
译者:臧秀涛
豆瓣评分:5.0
出版社:人民邮电出版社
出版年份:2017-2
页数:136
内容简介:
新手程序员在具备了理论基础后,面对实际项目时,往往不知道如何解决问题;有经验的程序员在学习了一门新语言后,也会有很多不知道如何使用的特性。针对程序员的这一普遍困惑,资深软件工程师Brian P. Hogan在这本书中总结了57道练习题,教他们如何锤炼技能。这些练习题的难度会逐渐增加,使得编程训练充满挑战又乐趣多多。
作者简介:
Brian P. Hogan
Web开发者、教师、作者、编辑。自1995年起一直在开发Web站点和应用。曾是多家小企业的自由开发者,并在两家创业公司担任过技术主管。经常在各种技术大会上发表演讲。目前在契皮瓦谷技术学院教授软件开发课程。喜欢撰写技术着作,尤其是关于Web设计和开发的。另着有《HTML5和CSS3实例教程》《Web开发秘方》等书。Twitter账号@bphogan。