面试题 小总结:
(1)、在Hibernate 中的配置中
现在有Animal 类 , Dog 类 ,Cat 类
Dog ,Cat 分别继承 Animal
请问:设计数据表中,应该设计几张表,假如设计一第表的话,怎么区分 Dog Cat
(2) 、在多线程中,怎么使两个线程共同使用一个成员变量
(3)、有一个对象 A , 我把它放入以Map 中,我怎么将其取出来
A a = new A();
Map map = HashMap();
Map .put(a,’value’);
这时我怎么将a 对应的值取出。
(4)、
Hibernate 中事务控制的具体配置方法?
怎么控制:防止,第一类丢失更新?
在进行事务控制的时候,可不可以,对一个类的中的某个方法做事务控制?
如果能:请说出配置方法
(5)、Struts Spring Hibernate 框架整合的过程?
(6) 、在解析XML时,为什么第一行的后边算是一个节点?
(7)、 有一个数据库表 其有三个字段:字段的名子,分别为:
Id, name ,update
其三个字段的类型:都是 varchar2 类型的,请问这样设计有问题吗?
(8)、
Struts2 标签会不会用?
(9)、用jsp/servlet 怎么实现文件的下载
(10)、jQuery 可以实现什么功能?
(11)、说一下:junit 是怎么用的?
(12)、在Linux 怎么查看:Tomcat 是否在运行?
(13)、在定义xml时 :命名空间:是做什么用的?
(14)、dom4j 与 其它的解析方式有什么不同?
(15)、在配置Hibernate 的关联关系时,怎么对 一对多的 set 中的对象进行排序.
1. 填空:
(1) 面向对象的语言具有 继承性、封装性、多态性。
(2) 能用foreach遍历访问的对象需要实现 IEnumerable接口或声明GetEnumerator方 法的类型。
(3) 列举ADO.net中的五个主要对象Command、Connection、DataSet、DataSetCommand、DataReader。
(3) <%# %> 和 <% %> 有什么区别?
<%# %>表示绑定的数据源
<% %>是服务器端代码块
(4).c#中的三元运算符是 ? :
(5).当整数a赋值给一个object对象时,整数a将会被 装箱
(6).类成员有 3 种可访问形式?
(7).public static const int A=1;这段代码有错误么?是什么?
答案:const成员都是static所以应该去掉static
(8).float f=-123.567F;
int i=(int)f;
i的值现在是 -123
(9).利用operator声明且仅声明了==,有什么错误么?
(10).委托声明的关键字是___delegate ___
(11).用sealed修饰的类有什么特点?答案:不可以被继承,只能被实例化
(12).在Asp.net中所有的自定义用户控件都必须继承自System.Web.UI.UserControl
(13).在.Net中所有可序列化的类都被标记为__[serializable]___
(14).在.Net托管代码中我们不用担心内存漏洞,这是因为有了___gC___
2. 不定项选择:
(1) 以下叙述正确的是:
A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
答案:BC
(2) 从数据库读取记录,你可能用到的方法有:
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
答案: B、C、D (考查对ADO.net的熟练程度)
评分标准: 一题5分,不选或者错选均不得分。漏选得2分。满分10分。
3. 简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注
意:ID可能不是连续的。)
解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到)
5. 列举ASP.NET 页面之间传递值的几种方式。
1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
6. 写出程序的输出结果
class Class1
{
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str)
{ str = "string being converted."; }
static void StringConvert(Class1 c)
{ c.str = "string being converted."; }
static void Add(int i)
{ i++; }
static void AddWithRef(ref int i)
{ i++; }
static void Main()
{
int i1 = 10;
int i2 = 20;
string str = "str";
Class1 c = new Class1();
Add(i1);//i1=11
AddWithRef(ref i2); //i2=20
Add(c.i); //i=1
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);//11 Error
Console.WriteLine(i2);//20 Error
Console.WriteLine(c.i); //1 Error
Console.WriteLine(str); //string being converted Error Console.WriteLine(c.str);//string being converted. Error }
}
答案:(考查值引用和对象引用)
10
21
str
string being converted.
7. 写出程序的输出结果
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();//B Error
a.Fun();//A.Fun() Error
}
答案:A
B
A .Fun()
评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。
(考查在继承类中构造函数, 以及new 方法, )
8. 写出程序的输出结果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);//1,2,5 Error
b.Fun2(a);//1,5 Error
}
}
答案:2
5
1
6
评分标准: 答对一点得2分,两点得5分,3点得7分。全对得10分。 (一些人做这题,头都晕了.... ^_^ )
9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实
现。(C#语言)
public class B
{
public static void Main()
{ Console.WriteLine(Foo(30));}
public static int Foo(int i)
{ if (i <= 0)
{
return 0;
}
else
{
if (i > 0 && i <= 2)
{
return 1;
}
else
{
return Foo(i - 1) + Foo(i - 2);
}
}
} }
评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。
写出if(i > 0 && i <= 2) return 1; 得5分。
方法参数过多需要扣分(扣除分数 = 参数个数 - 1)
不用递归算法扣5分
(递归算法在树结构建立等方面比较常用)
10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
答案:
public interface Observer
{void Response(); //观察者的响应,如是老鼠见到猫的反映}
public interface Subject
{void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠}
public class Mouse : Observer
{ private string name;
public Mouse(string name, Subject subj)
{ this.name = name;
subj.AimAt(this);
}
public void Response()
{Console.WriteLine(name + " attempt to escape!");}
}
public class Master : Observer
{ public Master(Subject subj)
{subj.AimAt(this);
}
public void Response()
{ Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{ private ArrayList observers;
public Cat()
{this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{this.observers.Add(obs);
}
public void Cry()
{ Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{obs.Response();
}
}
}
class MainClass
{ static void Main()
{ Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
11.以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。
答案:不能通过编译;把第1个<%%>中的方法放到.CS文件中作为一个独立的方法,
在Page_load事件中放入第2个<%%>中的代码.
C#程序只能在.CS文件中执行,用户请求某个页面时,先实例化.CS文件执行里
面的C#代码响应客户端,把生成的HTML代码Response到客户端浏览器
<html>
<%
int subtract(int num1, int num2) {
return num1-num2;
}
%>
<body>
<%
int number = 100;
while (number > 0) {
Response.Write("Value: " + number + "<br/>");
number = subtract(number, 1);
}
%>
</body>
</html>
12.解释一下带 “original_” 前缀的Data Parameter和不带前缀的Data Parameter有什么异同。(可用简单的代码说明)
答案:GridView中在配置SqlDataSource中的OldValuesParameterFormatString时用到的,用来配置DeleteCommand, InsertCommand, UpdateCommand 时用到的参数,带 “original_” 前缀指的是在GridView中的数据,根据在GridView中的数据去修改数据库中的数据
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="SNO" DataSourceID="SqlDataSource1" Height="114px"
Width="837px">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
<asp:BoundField DataField="SNO" HeaderText="学号" ReadOnly="True" SortExpression="SNO" />
<asp:BoundField DataField="SNAME" HeaderText="SNAME" SortExpression="SNAME" />
<asp:BoundField DataField="SSEX" HeaderText="SSEX" SortExpression="SSEX" />
<asp:BoundField DataField="SAGE" HeaderText="SAGE" SortExpression="SAGE" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:Test96ConnectionString %>"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT * FROM [STUDENTS]"
DeleteCommand="DELETE FROM [STUDENTS] WHERE [SNO] = @original_SNO"
InsertCommand="INSERT INTO [STUDENTS] ([SNO], [SNAME], [SSEX], [SAGE]) VALUES (@SNO, @SNAME,
@SSEX, @SAGE)"
UpdateCommand="UPDATE [STUDENTS] SET [SNAME] = @SNAME, [SSEX] = @SSEX, [SAGE] = @SAGE
WHERE [SNO] = @original_SNO">
<DeleteParameters>
<asp:Parameter Name="original_SNO" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="SNAME" Type="String" />
<asp:Parameter Name="SSEX" Type="String" />
<asp:Parameter Name="SAGE" Type="Int16" />
<asp:Parameter Name="original_SNO" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="SNO" Type="Int32" />
<asp:Parameter Name="SNAME" Type="String" />
<asp:Parameter Name="SSEX" Type="String" />
<asp:Parameter Name="SAGE" Type="Int16" />
</InsertParameters>
</asp:SqlDataSource>
13.GridView没有内置Insert 数据的功能,如果想在GridView内Insert数据,你有什么想法?
答案:在页面中填加一个Table和一些TextBox, Button用来填写要添加的数据和提交,写一个
insert方法,用Foreach把 inser into 语句的字符串连接好,然后执行这个SQL语句。
14.ASP.NET 2.0 哪个(些)特性是你觉得最激动人心的?为什么?(也可以谈C#2.0)
答案:ASP.NET 2.0相对于1.1突出了3大理念,
1,提高生产力
A 一致性(masterpage)
B 会员管理
C 资料存取
D 个性化
2 管理能力的提高(例如WEB.CONFIG)
3 提升效能,满足更多人的访问
1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.
2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有 在分离的代码文件,无法在页面嵌入服务器端代码获得帮助提示,
3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢
4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者 5, 在ASP.NET中增加了40多个新的控件,减少了工作量
15、override与重载的区别
答案:Override用来重写父类的方法,重载使用相同名的方法或拥有不同类型的参数
16、.net的错误处理机制是什么
答案:.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直
到找到匹配的Catch为止。
17、C#中接口和类的异同
答案:接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。
18、DataReader和DataSet的异同
答案:DataReader用于读取一行数据,需要一直和数据库保持连接;
DataSet用于读取数据集合并在内存中保存数据,读取结束后就自动关闭和数据库的连接。
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
19.下面的代码中有什么错误吗?___
答案:可以运行使用;abstract 类中抽象成员不需要在用override来修饰,因为抽象成员本身就是override的
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
20.当类T只声明了私有实例构造函数时,则在T的程序文本外部, 不可以 从T派生出新
的类, 不可以 直接创建T的任何实例。 21.在.Net中,类System.Web.UI.Page 可以被继承么?答案:可以
二.简答题
1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
答案:Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法,
2.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
当使用new B()创建B的实例时,产生什么输出?
答案:X=1,Y=0
3.产生的输出结果是什么?答案:x=1,y=2
答案:类载入时,最先执行static 的构造函数static A(),这时B类中没有构造函数给Y初始化所以B.Y的值=0
class A
{
public static int X;
static A()
{
X = B.Y + 1;
Console.WriteLine("B.Y={0}",B.Y); //B.Y=0
}
}
class B
{
public static int Y = A.X + 1;
static B() { }
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);//2,1
}
}
4.谈谈类和结构的区别
答案:
类是存储在堆上的引用类型,结构是存储在堆栈上的值
结构不支持继承
结构的构造函数的工作方式和类的不同,为结构定义构造函数的方式与为类定义构造函数的方式相同,但不允许为结构定义无参数的构造函数
5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写
主要程序来实现。
class Test5
{ public static void Main()
{ int i = 0;
string Allstr="";
int begin =(int)((char)'A');
int end =(int)((char)'Z');
Random rand = new Random();
while( i < 10000)
{ int strnum = rand.Next(begin,end);
char str = (char)strnum;
Allstr = Allstr + str + " \t";
i++;
}
Console.WriteLine(Allstr );
}
}
6.对于这样的一个枚举类型:试写一段程序显示出枚举类型中定义的所有符号名称以及它们对
应的数值。
enum Color:byte
{
Red,
Green,
Blue,
Orange
}
Color.Red;
byte i = 0;
while (i <=3)
{
Console.Write(c+i);
Console.Write(" ");
Console.WriteLine((int)(c+i));
i++;
}
7.什么叫做SQL注入,如何防止?请举例说明。
许多网站程序在编写时,没有对用户输入数据的合法性进行判断,
使应用程序存在安全隐患。用户可以提交一段数据库查询代码,
(一般是在浏览器地址栏进行,通过正常的www端口访问)
根据程序返回的结果,获得某些他想得知的数据,
这就是所谓的SQL Injection,即SQL注入。
举例:
1) 整型参数的判断
/news.asp?id=xx and 1=1, news.asp运行正常,
而且与/news.asp?id=xx运行结果相同;
/news.asp?id=xx and 1=2, news.asp运行异常;(这就是经典的 1=1 ;1=2 判断方法)
如果以上面满足,news.asp中就会存在SQL注入漏洞,反之则可能不能注入。
2) 字符串型参数的判断
方法与数值型参数判断方法基本相同
当输入的参数xx为字符串时,通常news.asp中SQL语句原貌大致如下:
select * from 表名 where 字段='xx',所以可以用以下步骤测试SQL注入是否存在。
/news.asp?id=xx’(附加一个单引号),此时news.asp中的SQL语句变成了 select * from 表名 where 字段=xx’,news.asp运行异常;
/news.asp?id=xx and '1'='1', news.asp运行正常,
而且与/news.asp?id=xx运行结果相同;
/news.asp?id=xx and '1'='2', news.asp运行异常;
如果以上满足,则news.asp存在SQL注入漏洞,反之则不能注入
3) 特殊情况的处理
有时ASP程序员会在程序员过滤掉单引号等字符,以防止SQL注入。此时可以用以下几种方法试一试。
①大小定混合法:由于VBS并不区分大小写,而程序员在过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select,SELECT等;
②UNICODE法:在IIS中,以UNICODE字符集实现国际化,我们完全可以IE中输入的字符串化成UNICODE字符串进行输入。如+ =%2B,空格=%20 等
;URLEncode信息参见附件一;
③ASCII码法:可以把输入的部分或全部字符全部
<4>出了上述方法以外,还有个更简单的方法就是使用现成的工具
像NB联盟的NBSI就是一款很不错的工具,目前最新的版本为2.2
8.下面这段代码输出什么?为什么?
答案:Not Equal,因为Object.ReferenceEquals()方法比较的是两个引用是否指向类的同一个实例。
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
{ Console.WriteLine("Equal");}
else
{ Console.WriteLine("Not Equal");}
分享一个公务员面试官的总结值得一看来源马淑娟的日志应该说经历过笔试进入面试的考生素质都不错但在面试中却表现各不相同有的差别甚至很大…
面试流程及题目一准备工作面试登记表面试人员简历测评表产品简介栾厚芳负责应聘者到达前准备好应聘者到达时在面试人员登记表按照到达时间顺…
面试时,有几个问题是面试人员常常会提出的,针对这些问题好好准备,在面试时也就不会哑口无言,无言以对了,现在找工作,得面试。面试技巧…
外企面试官的工作总结本文来源中人网曾经阅人无数也被人阅了无数次所以在这里我也把自己的一些求职和招聘的经历做了点小小的回顾我相信一点…
请说下你为什么想要进社区工作?答:我将主要从以下几个方面回答这个问题.首先,从社会发展的角度来说,科学发展观的思想告诉我们,社会主…
1、你简单介绍一下自己?我叫李洋,25岁,毕业于天津城市职业学院,大专学历。我曾获得过计算机一级证书,会计从业资格证书。我是一个兴…
1在决定这一职位聘用什么人时你认为那些资格是最重要的答我认为21世纪对企业提出了一些真正的挑战如果是招聘者的话不管什么职位我会考略…
1什么是负载测试什么是性能测试负载测试是一种性能测试指数据在超负荷环境中运行程序是否能够承担在这种测试中将使测试对象承担不同的工作…
1说说自己的工作情况2簇优化中的大致流程问题点分析如何调天馈3中国移动获得130MHz频谱资源频段分别为188019xxMHz23…