本文已参与「新人创作礼」活动,一起开启掘金创作之路。
打工仔的我最近在面试
整理一下面试问题
01丶 MyBatis 中 #{} 和 ${} 的区别 ?(这个是频率最高的)
答案: 在MyBatis 的映射配置文件中,动态传递参数有两种方式 #{} 占位符 为参数占位符 ?,即sql 预编译 ${} 为字符串替换,即 sql 拼接。#{} 能防止sql 注入而
${} 不能防止sql 注入
02丶谈谈 session和cookie的区别和联系
答案: 首先session是存在于服务器端的,cookie 是在客户浏览器 本地的所以cookie是不安全的,考虑到安全应当使用session,如果考虑服务器的压力就使用cookie。 第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,下一次请求时会去会话中查询这个Session ID 是否存在。
03丶 如果cookie被禁用情况下如何使用session
答案: 1.Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session。 2.还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器
04丶 webscoket与http的区别
答案: 1、WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的; 2、WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接。
05 丶谈谈 forward 和 redirect 区别
答案: forward 是转发 : 转发地址栏路径不变 转发只能访问当前服务器下的资源 可以访问WEB-INF下的资源 转发是一次请求,可以使用request对象来共享数据 redirect 是重定向 : 重定向地址栏路径发生变化 重定向可以访问其他站点(服务器)的资源 重定向是两次请求, 不可以使用request域对象来共享数据
06 丶 String、StringBuilder、StringBuffer 之间的区别
答案 : 执行速度:一般情况StringBuilder > StringBuffer > String StringBudder 是线程不安全的但是效率搞一般在单线程中使用(线程安全是因为 对方法加了同步锁(synchronized )或者对调用的方法加了同步锁) StringBuffer 线程安全但是效率没StringBudder 高一般在多线程中使用。
loding...........