【面试题解析】-- 20200328Java软件开发工程师面试题解析

1. 为什么函数不能根据返回类型来区分重载?

在Java中,重载的概念是:在同一个类中,方法名相同,参数列表完全不同的方法。如果我们声明返回值不同、参数列表完全相同的两个方法,那么程序将不知道该调用哪个方法,所以我们不能根据返回值类型区分重载。

2. 在开发中遇到过内存溢出么?原因有哪些?解决方法有哪些?

引起内存溢出的原因有很多种,常见的有以下几种:

  1. 内存中加载的数据量多于庞大,如一次从数据库中取出过多的数据。
  2. 集合类中有对象的引用,并且使用完后未清空,这样使得JVM不能回收。
  3. 代码中存在死循环或循环产生过多重复的对象实体。
  4. 所设置的启动参数过小。

内存溢出的解决方法:

  1. 修改JVM启动参数,直接增加内存。
  2. 检查错误日志。
  3. 对代码进行分析,找出内存溢出的位置。

3. 说下原生 jdbc 操作数据库流程?

  1. 通过Class.forName()加载JDBC驱动程序。
  2. 获取数据库连接。
  3. 通过Statement或ProparedStatement执行SQL语句。
  4. 获取返回的结果。
  5. 关闭数据库连接。

4. 什么要使用 PreparedStatement?

PreparedStatment是预编译SQL执行对象,它会将SQL参数转换成?,这样可以有效地避免SQL注入的问题。

5. Cookie 和 Session 的区别是什么?

保存位置上:Cookie保存在客户端浏览器上,Session保存在服务器中。
性能上:使用Cookie性能会比较好,因为它不占用服务器端内存。
安全性上:使用Session会比较好,因为Cookie保存在客户端多以可能会被其他人劫持Cookie。

发布了133 篇原创文章 · 获赞 56 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43199016/article/details/105191477