常见面试题总结(java方向)

 

【写在前面】前几个星期报了阿里巴巴的实习,结果今天突然一个电话打过来,本来还在图书馆学习,最后被强开面试了一波,下面把面试题记录下来吧,以后遇到面试题也都往里面加。另外,我报的实习方向是Java工程师,Web方向的,经过这一次的面试,我发现网络中的知识占很多,操作系统也有小部分,所以建议大家回去复习一下。

 

1、自我介绍

这个是一定会问的问题,提前想好自己的介绍,突出精通的地方以及自己的成就。

 

2、请说明一下TCP协议中三次握手、四次挥手的过程?

(问到这个,我是相当的蒙蔽,也是答的最差的一道题,毕竟网络课都过去一年了,差不多忘记了,所以奉劝大家回去复习下网络,面试中太常见)

(缩减了一些,便于口头表达)

在TCP/IP中,采用三次握手来建立一次连接。

第一次握手:客户端发送syn包到服务器,等待服务器确认

第二次握手:服务器收到syn包,同时自己也发送一个SYN+ACK包,向客户端确认

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,两者可以进行数据交换了,完成三次握手。

TCP连接的释放就是俗称的四次挥手,它和三次握手是正反面的应用

过程:

  • A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接,进入终止等待1状态,等待B的确认。
  • B收到连接释放报文段后即发出确认报文段,B进入关闭等待状态,此时的TCP处于半关闭状态,A到B的连接释放。
  • A收到B的确认后,进入终止等待2状态,等待B发出的连接释放报文段。
    B没有要向A发出的数据,B发出连接释放报文段,B进入LAST-ACK(最后确认)状态,等待A的确认。
  • A收到B的连接释放报文段后,对此发出确认报文段,最后终止连接

也可以看看别人讲的三次握手四次挥手

https://blog.youkuaiyun.com/qq_39521554/article/details/79717895

3、网络协议有哪七大层?路由器工作在哪一层?

从下到上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

路由器在网络层工作

4、传输层的作用是什么?

实现端到端的数据传输,实现差错控制流量控制,纠错的功能,同时向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。

5、线程与进程的区别?(这个还比较好答,我偷一下懒,下面一个问题就把我问住了)

https://www.cnblogs.com/renzhuang/articles/6733461.html

6、线程共享哪些资源?

内存、堆、地址空间,(栈是线程独自占有的)

https://www.cnblogs.com/baoendemao/p/3804677.html

7、java中进程通信的方式有哪些?(这个真的偏)

(1) 管道(PIPE)
(2) 命名管道(FIFO)
(3) 信号灯(Semphore)
(4) 消息队列(MessageQueue)
(5) 共享内存(SharedMemory)
(6) Socket(当然也有Socket)

https://blog.youkuaiyun.com/huzhigenlaohu/article/details/52488947

8、简述一下线程池?

所谓线程池,就是将多个线程放在一个池子里面(所谓池化技术),然后需要线程的时候不是创建一个线程,而是从线程池里面获取一个可用的线程,然后执行我们的任务。线程池的关键在于它为我们管理了多个线程,我们不需要关心如何创建线程,我们只需要关系我们的核心业务,然后需要线程来执行任务的时候从线程池中获取线程。任务执行完之后线程不会被销毁,而是会被重新放到池子里面,等待机会去执行任务。

https://www.cnblogs.com/exe19/p/5359885.html

9、java反射机制原理?

在JAVA中,只要给定类的名字,就可以通过反射机制来获取类的所有信息,可以动态的创建对象和编译

JAVA语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类、类中的方法以及属性等。

反射的实现主要借助以下四个类:

Class:类的对象

Constructor:类的构造方法

Field:类中的属性对象

Method:类中的方法对象

10、SQL中的索引是什么?

有两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引

聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。

下面举两个简单的例子:

图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

https://www.cnblogs.com/hyd1213126/p/5828937.html

11、HTTP常见的状态码

https://blog.youkuaiyun.com/qq_36528114/article/details/80091881

https://www.cnblogs.com/lgp2000/p/6874554.html

12、排序算法有哪些?

冒泡排序、快速排序、归并排序、选择排序等

12、快速排序的原理?

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,采用二分的思想。

--------------------------------------------------------------------------------------

剩下的就是一些轻松的问题了,比如,大学中最骄傲的事是什么,最困难的经历是什么,目前你在学习什么,之后有什么打算,关于实习,你还有什么问题没有,当问到这些问题,基本上面试就快结束了,这些问题不难,但是大家还是提前想好吧,以上就是这次面试的问题,以后的面试题再往上面加。

--------------------------------------------------------------------------------------

下面是继续添加的面试题:

一:名词解释:

EJB:用通俗话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用

JDNI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能

JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

 

二、AWT和swing的区别:

AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。

Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。    

AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附录:J2EE常见名词

1.web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接和容器中的环境变量接接口互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

2.Web container:实现J2EE体系结构中Web组件协议的容器。这个协议规定了一个Web组件运行时的环境,包括安全,一致性,生命周期管理,事务,配置和其它的服务。一个提供和JSP和J2EE平台APIs界面相同服务的容器。一个Web container 由Web服务器或者J2EE服务器提供。

3.EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。一个实现了J2EE体系结构中EJB组件规范的容器。 这个规范指定了一个Enterprise bean的运行时环境,包括安全,一致性,生命周期,事务, 配置,和其他的服务。

4.JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

5.JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

6.JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

7.JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

8.RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。RMI-IIOP出现以前,只有RMI和CORBA两种选择来进行分布式程序设计。RMI-IIOP综合了RMI和CORBA的优点,克服了他们的缺点,使得程序员能更方便的编写分布式程序设计,实现分布式计算。首先,RMI-IIOP综合了RMI的简单性和CORBA的多语言性(兼容性),其次RMI-IIOP克服了RMI只能用于Java的缺点和CORBA的复杂性(可以不用掌握IDL)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值