面试题汇编

第一,谈谈final, finally, finalize的区别。

final?
修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

finally?
再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize?
方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

第三,Static Nested Class Inner Class的不同,说得越多越好(面试题有的很笼统)
Nested Class
(一般是C++的说法),Inner Class (一般是JAVA的说法)Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

第四,&&&的区别。
&
是位运算符。&&是布尔逻辑运算符。

第五,HashMapHashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap
类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable
类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

第六,Collection Collections的区别。
Collections
是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection
是个java.util下的接口,它是各种集合结构的父接口。


第七,什么时候用assert
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的:
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1
应该总是产生一个布尔值。
Expression2
可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。


第八,GC是什么? 为什么要有GC? (基础)
GC
是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()

第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx,一个是指向“xyx”的引用对象s

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)
返回(long12Math.round(-11.5)返回(long-11;

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;
有错,s1short型,s1+1int,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) short s1 = 1; s1 += 1正确。

第十二,sleep() wait() 有什么区别? 搞线程的最爱
sleep()
方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)
正在运行的线程因为其它原因而阻塞。
wait()
是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。



第十三,Java有没有goto?
Goto?java
中的保留字,现在没有在java中使用。

第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String
有有length()这个方法。

第十五,OverloadOverride的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载OverloadingJava多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)Overloaded的方法是可以改变返回值的类型。

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set
里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()
==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

第十七,给我一个你最常见到的runtime exception
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,errorexception有什么区别?
error
表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception
表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。


第十九,List, Set, Map是否继承自Collection接口?
List
Set

Map
不是

第二十,abstract classinterface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

第二十一,abstractmethod是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。



第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading

第二十五,是否可以继承String?
String
类是final类故不可以继承。

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。


第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
C背景的程序员特别喜欢问这种问题。

2 << 3

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。


第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?
switch
expr1)中,expr1是一个整数表达式。因此传递给 switch case 语句的参数应该是 int short char 或者 bytelong,string 都不能作用于swtich

第三十二,编程题: 写一个Singleton出来。
Singleton
模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个staticprivate的该类变量,在类初始化时实例话,通过一个publicgetInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
  private Singleton(){}
  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用
  private static Singleton instance = new Singleton();
  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }
}
第二种形式:
public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instancenew Singleton();
return instance;
  }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些



Hashtable
HashMap
Hashtable
继承自Dictionary类,而HashMapJava1.2引进的Map interface的一个实现

HashMap
允许将null作为一个entrykey或者value,而Hashtable不允许

还有就是,HashMapHashtablecontains方法去掉了,改成containsvaluecontainsKey。因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在
多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。

Hashtable
HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

 

 

 

 

9STRINGSTRINGBUFFER的区别。

答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffertoString()方法

 

Jsp方面

1
jsp有哪些内置对象?作用分别是什么?

:JSP共有以下9种基本内置组件(可与ASP6种内部组件相对应):

 request 用户端请求,此请求会包含来自GET/POST请求的参数

response
网页传回用户端的回应

pageContext
网页的属性是在这里管理

session
与请求有关的会话期

application servlet
正在执行的内容

out
用来传送回应的输出

config servlet
的构架部件

page JSP
网页本身

exception
针对错误网页,未捕捉的例外

2
jsp有哪些动作?作用分别是什么?

:JSP共有以下6种基本动作

jsp:include
:在页面被请求的时候引入一个文件。

jsp:useBean
:寻找或者实例化一个JavaBean

jsp:setProperty
:设置JavaBean的属性。

jsp:getProperty
:输出某个JavaBean的属性。

jsp:forward
:把请求转到一个新的页面。

jsp:plugin
:根据浏览器类型为Java插件生成OBJECTEMBED标记

3
JSP中动态INCLUDE与静态INCLUDE的区别?

答:动态INCLUDEjsp:include动作实现

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

静态INCLUDEinclude伪码实现,定不会检查所含文件的变化,适用于包含静态页面



4
、两种跳转方式分别是什么?有什么区别?

答:有两种,分别为:





前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

Servlet
方面

1
、说一说Servlet的生命周期?

:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,servicedestroy方法表达。

2
Servlet版本间(忘了问的是哪两个版本了)的不同?

希望大家补上,谢谢

3
JAVA SERVLET APIforward() redirect()的区别?

:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

4
Servlet的基本架构

public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

}

}

 

 

7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC4,应该截为“我AB”,输入“我ABCDEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

答:代码如下:

package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:
"+SplitStr+";SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test
dddsaf中男大3443n中国43中国人 0ewldfls=103",4);
ss.SplitIt();
}
}

 

 

Java (一)
1
   概述struts,以及struts如何实现MVC架构的?
答:struts framework是一种基于java的技术,Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及"编写一次、到处运行"的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。。。。。。。。。
Java
(一)
1
   概述struts,以及struts如何实现MVC架构的?
答:struts framework是一种基于java的技术,Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及"编写一次、到处运行"的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
Struts
的处理流程:
l         
控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModulConfig对象。
l         
控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。
l         
在控制器调用具体的ActionExecute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
l         
执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。

 

2   概述MVC体系结构
答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。
MVC体系中,模型通常被称为"业务逻辑",是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型
MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。

3   多线程的优点
答:可分两方面来答:
l         
相对于单线程而言
可以响应多任务的并发操作。
多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那个被阻塞的线程暂停,所有其他的线程继续执行。
l         
相对于进程而言:(可以答也可以不答)
它所要求的开销比较小,转换成本较小。
所有线程共享同一地址空间,相互协作。
彼此之间通信很容易。

4   EJB概述
答:EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。
    EJB
分为三种:Session Bean  Entity Bean  Message-Driven Bean 三种,其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。
5
   java访问Oracle数据库、取得记录并输出到界面
答:..........................
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn=DriverManager.getConnection( url , username , password );
   Statement stmt=conn.createStatement();
   String str="select  *  from  [table]";
   ResultSet rs=stmt.executeQuery(str);
   While(rs.next())
   {
     ........................
   }
   rs.close();
   stmt.close();
   conn.close();

6   概述java垃圾回收机制
答:它的工作原理如下:
   
当不存在对一个对象的引用时,我们就假定不再需要那个对象,那个对象所占有的存储单元可以被收回,可通过System.gc()方法回收,但一般要把不再引用的对象标志为null为佳。

7   java类是否可以多继承,怎么实现多继承?
答:java没有多继承,但可以通过接口的形式来达到多继承的目地。

8   面向对象的特点
答:面向对象有三大特点:封装、继承、多态。(如果要回答四个,可加上  抽象性  这一特点)

9、接口有什么优点
答:接口有以下优点:
l         
接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现。
l         
利用接口可达到实现多继承的目地。
l         
可以在不暴露对象的类的前提下,暴露对象的编程接口。
l         
不用强迫类关系在无关类中截获相似处(采用适配器就可以了)
l         
声明想执行的一个或多个方法。

10  ArrayList Vector 的区别
答:主要从两个方面来说明:
l         
安全、效率方面
如果要实现同步安全,则要用Vector,否则则用ArrayList,因为ArrayList不考虑同步安全的问题,所以效率要高些。
l         
资源方面
当两者的容量已满时,它们都会自动增长其容量,但Vector是按其容量的一倍增长,而ArrayList则按其容量的50%增加,所以Vector更能节省资源。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称(   )   A.段地址         B.偏移地址   C.物理地址        D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有(   )   A.2345H        B.12345H   C.12340H       D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是(   )   A.XOR BX,BX    B.OR BX,BX   C.AND BX,BX    D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是(   )   A.CX≠0且ZF=1    B.CX≠0且ZF=0   C.CX≠0或ZF=1    D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(   )   A.DAA校正指令的功能已自动加在AH中   B.进位值在AF中,校正后根据AF内容再加在AH中   C.进位值在CF中,校正后根据CF内容再加在AH中   D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是(   )   A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位   B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0   C.指令AND AX,OFH执行后,分离出AL低四位   D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是(   )   A.STOSW        B.ADD AL,CL   C.NEG BX       D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是(   )   A.ADD BH,01H     B.OR BH,01H   C.XOR BH,01H     D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是(   )   A.ROL CL,1        B.MUL 4     ROL CL,1   C.SHL CL,1        D.MOV CL,2    SHL CL,1             SHL CL,CL 10.下面各传送指令中,正确的是(   )   A.MOV [DI],[SI]            B.MOV[DX+DI],AL   C.MOV WORD PTR [BX],0100H       D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(   )   A.名字的第一个字符可以是大写英文字母及小写英文字母   B.名字的第一个字符可以是字母、数字及、@、_   C.名字的有效长度≤31个字符   D.在名字中不允许出现$ 12.要实现使BETA的值为56,应采用语句为(   )   A.BETA DB 56      B.BETA DB 56H   C.BETA EQU 56      D.BETA EQU 56H 13.REPZ CMPSW指令,重复执行的终止条件是(   )   A.CX=0或ZF=0      B.CX=0且ZF=0   C.CX=0或ZF=1      D.CX=0且ZF=1 14.下面程序段执行后,AL中的内容是(   )   MOV AX,8833H   ADD AL,AH   DAA   A.21       B.21H   C.0C1H      D.0DDH 15.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为(   )   A.ZF=1      B.ZF=0   C.SF=1      D.SF=0 16.检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是(   )   A.JNC LOP1      B.JA  LOP1   C.JC LOP1      D.JGE  LOP1 17.在下列串操作指令中,同时使用源串和目的串地址指针的指令是(   )   A.STOSW      B.LODSW   C.SCASW      D.CMPSW 18.设AL=0AH,下列指令执行后能使AL=05H的是(   )   A.NOT AL         B.AND AL,0FH   C.XOR AL,0FH      D.OR AL,0FH19.DA1  DW‘AB’,‘CD’,‘EF’,‘GH’(   )     ┇    MOV AX,DA1+3  指令执行后AX中的内容是  A.‘EF’   B.‘CD’  C.‘BC’   D.‘FC’20.使用DOS系统功能调用时,使用的软中断指令是(   )  A.INT 21      B.INT 10H  C.INT 16H     D.INT 21H二、填空题(本大题共12空,每空0.5分,共6分)请在每小题的空格中填上正确答案。错填、不填均无分。21.十六进制数0FFF8H表示的十进制正数为________,表示的十进制负数为________。22.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为________,其物理地址为________。23.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。24.当标志位________=1时表示无符号数运算产生溢出,而当标志位________=1是表示带符号数运算产生溢出。25.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是________,而后两个字节存放的是________。26.在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是________或________才有实际意义。三、简答题(本大题共4小题,每小题2分,共8分)27.已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。(1)MOV AL,[BX](2)MOV CS:[BX+DI],AH28.0P1 DB 1,2 0P2 DW 3412H,5678H┇ MOV AX,OP1+1;字单元(OP1+1) AX MOV BL,OP2+1;字节单元(OP2+1) BL 上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。29.下列语句在存储器中分别为变量分配多少字节? (1)AD2 DW 10 DUP(?),10 (2)AD3 DD 100 DUP(?)30.简述下面两条指令分别是什么语法错误? MOV [BX],[SI] MOV AX,DL四、程序分析题(本大题共6小题,每小题6分,共36分)31. MOV DL,AL   NOT DL   TEST DL,04H   JE NEXT        ┇ NEXT:…   若上述程序段执行时产生分支,说明AL中的数第几位一定为1?程序段执行后CF是多少?32.DA1  DB‘ABCDEFGHI’  DA2  DB  9 DUP(0)    ┇    LEA SI,DA1    LEA DI,DA2    MOV CX,9    CLD  LOP: LODSB    SUB AL,10H    STOSB    LOOP LOP    . . . 试问:①写出程序执行后DA2各字节中的数据。   ②保持程序功能情况下,程序中 可否改写为 33.已知:BX=4567H   NEG BX   INC BX   NEG BX   DEC BX 程序段执行后,BX=________,CF=________。34.   MOV BL,64H     MOV CL,03H     XOR AX,AX AGAIN:ADD AL,BL    ADC AH,0    DEC CL    JNZ AGAIN 问:(1)该程序段完成的功能是:   (2)AX=________。35.已知数据段中定义 DAT1 DB  12H,34H,56H,78H    MOV CX,0    MOV AX,WORD PTR DAT1    MOV CL,DAT1+3 当程序段执行完后AX=________,CX=________。36.DA1  DB 83H,72H,61H,94H,5AH    ┇     MOV CX,WORD PTR DA1     AND CX,0FH     MOV AL,DA1+3     SHL AL,CL  上述指令序列执行后,AL=_______,CL=_______。五、程序填空题(本大题共2小题,每小题6分,共12分)37.在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。   ┇ MOV AX,NUMW _____________ XOR DX,DX DIV BX MOV QUI,AX  _____________38.某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。 STRING DB‘COMPUTER’,‘$’ ┇ MOV BX,0FFSET STRING LOP:MOV DL,[BX]    MOV AH,02H    INT 21H    ____________________    ____________________    JNE LOP六、编程序题(本大题共2小题,第39小题6分,第40小题12分,共18分)39.试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。40.试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。    DATA  SEGMENT    DA1  DW  XXXX    DATA ENDS2006年10月汇编语言程序设计试题答案  来源: http://www.csai.cn 2006年10月汇编语言程序设计试题答案一、1、C;2、D;3、A;4、B;5、C;6、C;7、D;8、B;9、C;10、C;11、B;12、C;13、A;14、B;15、A16、C;17、D;18、C;19、D;20、B二、21、+65528;-3276022、20A8H;11488H23、状态;控制24、CF;OF25、IP;CS26、STOS;CMP三、27、(1)21357H;(2)43357H28、MOV AX,WORD PTR(OP1+1)    MOV BL,BYTE PTR(OP2+1)29、(1)22;(2)40030、MOV指令不能在两个存储器操作数之间进行;    操作数类型不匹配四、31、第2位;CF=032、123456789;不能更改33、BX=4565H;CF=134、AX=012CH,将AX内容乘3送BX中35、AX=3412H,CX=0078H36、AL=0A0H,CL=03H五、37、MOV BX,500    MOV REM,DX38、INC BX    CMP [BX],24H六、39、LEA DI,DA_BY        MOV CX,32        MOV AL,‘Y’        CLD        REP STOSB40、CODE SEGMENT          ASSUME CS:CODE,DS:DATA       START: MOV  AX,DATA              MOV  DS,AX              LEA  SI,DA1              MOV  CX,16              XOR BL,BL       AGAIN: MOV  AL,[SI]              HL AL,1              JC NEXT              INC BL        NEXT:INC SI              LOOP AGAIN              TEST BL,01H              JNE  L1              CLC              JMP DONE           L1: STC         DONE: MOV AH,4CH               INT 21H         CODE ENDS              END START  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值