Java 后台开发面试题分享九

2020-11-19 16:27:54 浏览数 (1)

null 和 undefined 的区别?

null 是一个表示"无"的对象,转为数值时为 0undefined 是一个表示"无"的原始值,转为数值时为 NaN。

当声明的变量还未被初始化时,变量的默认值为 undefinednull 用来表示尚未存在的对象。

undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义,典型用法是:

1)变量被声明了,但没有赋值时,就等于 undefined

2)调用函数时,应该提供的参数没有提供,该参数等于 undefined

3)对象没有赋值的属性,该属性的值为 undefined

4)函数没有返回值时,默认返回 undefined

null 表示"没有对象",即该处不应该有值,典型用法是:

1) 作为函数的参数,表示该函数的参数不是对象。

2) 作为对象原型链的终点。


简单地举例说明什么是 MySQL 的脏读、不可重复读、幻读

  1. 脏读的情况:对于两个事务 T1 与 T2,T1 读取了已经被 T2 更新但是还没有提交的字段之后,若此时 T2 回滚,T1 读取的内容就是临时并且无效的。
  2. 不可重复读:对于两个事务 T1 和 T2,T1 读取了一个字段,然后 T2 更新了该字段并提交之后,T1 再次提取同一个字段,值便不相等了。
  3. 幻读:对于两个事务 T1、T2,T1 从表中读取数据,然后 T2 进行了 INSERT 操作并提交,当 T1 再次读取的时候,结果不一致的情况发生。

面向过程和面向对象的区别

首先,两者都是软件开发思想。先有面向过程,后有面向对象。在大型项目中,针对面向过程的缺点,推出了面向对象开发思想。

编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。

封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。

面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势更加明显。


使用 javascript 判断一个字符串中出现次数最多的字符,并统计这个次数

代码语言:javascript复制
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = ; i < str.length; i  ) {
    if (!json[str.charAt(i)]) {
        json[str.charAt(i)] = ;
    } else {
        json[str.charAt(i)]  ;
    }
};
var iMax = ;
var iIndex = '';
for (var i in json) {
    if (json[i] > iMax) {
        iMax = json[i];
        iIndex = i;
    }
}
alert('出现次数最多的是:'   iIndex   '出现'   iMax   '次');

在 JQuery 中,`.html()` 和 `.text()` 及 `.val()` 的区别

.html().text().val() 的差异总结:

  • .html().text().val() 三种方法都是用来读取选定元素的内容。
  • .html() 是用来读取元素的 html 内容(包括 html 标签)。
  • .text() 用来读取元素的纯文本内容,包括其后代元素。
  • .val() 是用来读取表单元素的 value 值。
  • .html().text() 方法不能使用在表单元素上,而 .val() 只能使用在表单元素上。
  • .html() 方法使用在元素集合上时,只读取第一个元素;.val() 方法和 .html() 相同,如果其应用在元素集合上时,只能读取第一个表单元素的 value 值,但是 .text() 不一样,如果 .text() 应用在多个元素上时,将会读取所有选中元素的文本内容。
  • .html(htmlString).text(textString).val(value) 三种方法都是用来替换选中元素的内容,如果三个方法同时运用在多个元素上时,那么将会替换所有选中元素的内容。
  • .html().text().val() 都可以使用回调函数的返回值来动态的改变多个元素的内容。

处理通过 jQuery 的 append 加入的元素的方法

通过 jQuery 的 append 新添加进网页的元素,使用 $(#id).click(function(){}) 是没有效果的;解决方法是用 on 函数:

代码语言:javascript复制
$("tbody").on('click', "[name='submitbutton']", function(){
    ...
});

JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

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


在 Web 中,什么是 Cookie?Session 和 Cookie 有什么区别?

Cookie 是 Web 服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个 Web 服务器存储 cookie。以后浏览器在给特定的 Web 服务器发请求的时候,同时会发送所有为该服务器存储的 cookie。

  • 无论客户端浏览器做怎么样的设置,session 都应该能正常工作。客户端可以选择禁用 cookie,但是 session 仍然是能够工作的,因为客户端无法禁用服务端的 session。
  • 在存储的数据量方面 session 和 cookies 也是不一样的。Session 能够存储任意的 Java 对象,Cookie 只能存储 String 类型的对象。

简单说一下 MVC 设计模式?

MVC 是一种使用 MVC (Model View Controller) 设计创建 Web 应用程序的模式,Model (模型) 表示应用程序核心 (比如数据库记录列表)。View (视图) 显示数据 (数据库记录)。Controller (控制器) 处理输入 (写入数据库记录)。

  • Model (模型) 是应用程序中用于处理应用程序数据逻辑的部分;通常模型对象负责在数据库中存取数据。
  • View (视图) 是应用程序中处理数据显示的部分;通常视图是依据模型数据创建的。
  • Controller (控制器) 是应用程序中处理用户交互的部分;通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 分层有助于管理复杂的应用程序,同时也简化了分组开发;不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。


Web:描述 Cookie 和 Session 的作用,区别和各自的应用范围,Session 工作原理

1)Cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个 WEB 站点会话间持久的保持数据。

2)Session 其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session 其实是利用 Cookie 进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个 Cookie,当这个 Session 结束时,其实就是意味着这个 Cookie 就过期了。

注:为这个用户创建的 Cookie 的名称是 aspsessionid;这个 Cookie 的唯一目的就是为每一个用户提供不同的身份认证。

3)Cookie 和 Session 的共同之处在于:cookie 和 session 都是用来跟踪浏览器用户身份的会话方式。

4)Cookie 和 Session 的最大区别是:cookie 数据保存在客户端,session 数据保存在服务器端。

5)Session 工作原理:session 技术中所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话的 sessionId,服务器根据当前 sessionId 判断相应的用户数据标志,以确定用户是否登录或具有某种权限。

  • Cookie:生命周期一般关闭浏览器后失效,也可以自定义失效时长;存储在浏览器;可存储内容小,大概有 4 KB;只能存储字符串信息;不安全;可在浏览器禁用 cookie。
  • Session:生命周期默认 30 分钟,可自定义时长;存储在服务器;可存储内容大,可以存储任意类型;安全;数据保存在服务器端会占用服务器的内存空间,如果存储信息过多、用户量过大,会严重影响服务器的性能。

0 人点赞