JAVA面试题

引用

一、问答题(选做6道题)
1、说出三种设计模式,并用UML描绘类图?
设计模式有哪些。(UML)

答:包括单类模式,工厂模式,MVC模式,观察者模式,代理模式,试配器模式,门面模式等等共23种之多。
UML分析设计中常用的几种图。(UML)
答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。
你对软件开发中迭代的含义的理解。(UML)

答:软件开发中,各个开发阶段不是顺序执行的,应该是并行执行,也就是跌代的意思。这样对于开发中的需求变化,及人员变动都能得到更好的适应。

2、hashTable与hashMap的区别?

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

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,
  主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
  HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
  HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
  Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
  最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,
  不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
  Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。


3、Jsp页面内置对象有哪些?

  request:表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
  response:表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
  out:对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
  pageContext:表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、 servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
  session:表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
  applicaton:表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
  config:表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
  page:表示从该页面产生的一个servlet实例 
  exception:
      4、TCP和UDP的区别?

TCP与UDP的区别
  1。基于连接与无连接
  2。对系统资源的要求(TCP较多,UDP少)
  3。UDP程序结构较简单
  4。流模式与数据报模式
  5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
具体编程时的区别
       1. socket()的参数不同
       2. UDP Server不需要调用listen和accept
       3. UDP收发数据用sendto/recvfrom函数
       4. TCP:地址信息在connect/accept时确定
          UDP:在sendto/recvfrom函数中每次均 需指定地址信息
       5. UDP:shutdown函数无效


5、string、System.String与StringBuild的区别?
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;

StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。
  这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。
  当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据

6.写出7个以上Collection接口,类
所有已知子接口:
BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>
所有已知实现类:
AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector

7.异常管理

所有已实现的接口:
Serializable
直接已知子类:
AclNotFoundException, ActivationException, AlreadyBoundException, ApplicationException, AWTException, BackingStoreException, BadAttributeValueExpException, BadBinaryOpValueExpException, BadLocationException, BadStringOperationException, BrokenBarrierException, CertificateException, ClassNotFoundException, CloneNotSupportedException, DataFormatException, DatatypeConfigurationException, DestroyFailedException, ExecutionException, ExpandVetoException, FontFormatException, GeneralSecurityException, GSSException, IllegalAccessException, IllegalClassFormatException, InstantiationException, InterruptedException, IntrospectionException, InvalidApplicationException, InvalidMidiDataException, InvalidPreferencesFormatException, InvalidTargetObjectTypeException, InvocationTargetException, IOException, JAXBException, JMException, KeySelectorException, LastOwnerException, LineUnavailableException, MarshalException, MidiUnavailableException, MimeTypeParseException, MimeTypeParseException, NamingException, NoninvertibleTransformException, NoSuchFieldException, NoSuchMethodException, NotBoundException, NotOwnerException, ParseException, ParserConfigurationException, PrinterException, PrintException, PrivilegedActionException, PropertyVetoException, RefreshFailedException, RemarshalException, RuntimeException, SAXException, ScriptException, ServerNotActiveException, SOAPException, SQLException, TimeoutException, TooManyListenersException, TransformerException, TransformException, UnmodifiableClassException, UnsupportedAudioFileException, UnsupportedCallbackException, UnsupportedFlavorException, UnsupportedLookAndFeelException, URIReferenceException, URISyntaxException, UserException, XAException, XMLParseException, XMLSignatureException, XMLStreamException, XPathException

--------------------------------------------------------------------------------
8.request和response的区别

    request是请求,即客服端发来的请求、
    response是响应,是服务器做出的响应
Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的<FORM>段中的HTML控件的值。也提供使用Secure Socket Layer(SSL)或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。
Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供HTTP变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息,以及任何将为这个域而存放在浏览器里新的cookie。它也提供了一系列的方法用来创建输出,例如无处不在的Response.Write方法。
cookie: Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。
讲的通俗一点就是:
Request(中文“请求”的意思):可以理解为客户端向服务器请求的信息,就是客户端向服务器请求时,把自己的浏览器信息、HTTP变量和保存在客户端的Cookie告诉服务器,这样服务器就可以根据这些信息判断是谁请求的,之前有没有请求过,对应客户端的Session是什么等等。
Response(中文“反应、响应”的意思):可以理解为服务器对客户端请求的响应,就是服务器接收到客户端的请求后,成生页面信息、Cookie(发到客户端后就保存在客户端)等发送到客户端。
Cookie(中文“饼干”,在这里不能这样理解了):就是保存在客户端上的一些信息,可以用来验证用户信息,提高用户响应速度等等。为何不把它理解为:我把饼干放在家里,我想吃的时候就拿出来吃。呵呵!


二、程序题(三个选一个)

      1、已知一个数组,编程实现:当用户输入n,则输出第n大的数以及该数在数组中的位置(从0开始)。


#include"stdio.h"
//沉底排序法
void main()
{
int i,j;
int a[5];
int tmp;

for(i=0;i<5;i++)
{
printf("请输入第%d个元素",i+1);
scanf("%d",&a[i]);

}

//小-大排序
for(i=4;i>=1;i--)
{
for(j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;

}
}
}
   
//输出
printf("排序结果为\n");
for(i=0;i<5;i++)
{
printf("%d ",a[i]);

}

}









三、数据结构与算法(必做)

      1、北京地铁图。已知两条线路交汇处的结点处,可以知道邻近线路的地铁运行时间、间隔时间...

           设计一种数据结构,编程实现:

           (1)从一站点到另一站点的所有线路。

           (2)从一站点到另一站点的时间最短线路。

四、面向对象设计(必做)

      1、电脑包含的部件有:显示器、存储器、控制器、运算器、外部设备

           电脑的类型有:台式电脑和笔记本电脑

           请用UML描述上述类图设计。

你可能感兴趣的:(java,设计模式,面试,浏览器,UML)