JAVA:面试题及答案

1.你最常上的两个技术站和最常使用的两个app分別进什么?主要解决你什么需求?

csdn、博客园,解决问题 github,参考代码 processon,画流程图

2.请简述http协议中get请求和post请求的区别.

1) get和post请求都是客户端与服务器之间得交互,请求——应答模式的协议 2)
get是从服务器上获取数据,post是向服务器传送数据,一般用于更新资源信息 3)
get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而post请求是放在请求头中的,我们是无法直接看到的
4) get提交有数据大小的限制,一般是不超过2KB,而POST理论上默认是没有限制 5)
get请求因为数据参数是暴露在URL中的,所以安全性比较低,如密码不能暴露的就不能用get请求;post请求中,请求信息是放在请求头的,安全性较高,可以使用。

3.请简述session和cookie的区別.

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中

4.简述Servlet与JSP的关系

1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
2.JSP编译后是"类servlet"。
3.Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

5.JSP内置对象有哪些,各自起到的作用

1、request 触发服务调用的请求
2、response 对请求的应答
3、session 为请求的客户创建的session对象
4、application 从 servlet 配置对象获得的 servlet 上下文(如在getServletConfig(),getContext()的调用中)
5、out 向输出流写入内容的对象
6、pageContext 本 JSP 的页面上下文
7、page实现处理本页当前请求的类的实例
8、config 本 JSP 的 ServletConfig
9、exception表示JSP页面运行时产生的异常

6.简述你所理解的JAVA封装、继承、多态。

7.写出2个常用的设计模式(伪代码),并简述应用场景。
23种设计模式(2)五种常用设计模式
8.HashMap和HashTable区别。
HashTable和HashMap的区别详解
9.HashSet和TreeSet的区别。

10.ArrayList和LinkedList的区别。

ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

11.==与equals的区别。

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
  equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

12.简述泛型、反射、注解应用场景及各自解决了哪些问题。

13.Thread类的方法有哪些,如何多种方式实现线程同步。

14进程与线程的区别,JAVA中有哪些方式可以创建线程。

进程是资源分配的最小单位,线程是程序执行的最小单位。

进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

15.现有一学生表结构(student-id,class-id,name),请写出统计每班有多少学生的SQL语句。

select class_id,count(*) from student group by class_id

16.假如你正在开发一个系统的登录程序,请简述你是如何实现记住用户名和密码这个操作的,并如何实现?

17.在视图层不支持存储cookie,服务端不支持session的场景下如何保持用户登陆状态。

18.设计一套CMS系统或者博客系统的表结构(画出大概的UML图即可)。

猜你喜欢

转载自blog.csdn.net/u011374582/article/details/84968331