A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SunYan 中级黑马   /  2018-7-28 13:04  /  7827 人查看  /  128 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 SunYan 于 2018-7-30 14:14 编辑

陕西严肃金服
公司行业:互联网/电子商务
公司规模:50人
公司地址:陕西省西安市新城区长乐东路82号1排1号
笔试题
面试总结:
1: 解释一下什么叫AOP(面向切面编程)?
答:AOP(Aspect-Oriented Programming)指一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscuttingconcern)
2:你是如何理解"横切关注"这个概念的?
答:"横切关注"是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉及到这些关注功能。通常,事务、日志、安全性等关注就是应用中的横切关注功能。
3:你用过的网站前端优化的技术有哪些?

① 浏览器访问优化:
- 减少HTTP请求数量:合并CSS、合并javascript、合并图片(CSS Sprite)
- 使用浏览器缓存:通过设置HTTP响应头中的Cache-Control和Expires属性,将CSS、JavaScript、图片等在浏览器中缓存,当这些静态资源需要更新时,可以更新HTML文件中的引用来让浏览器重新请求新的资源
- 启用压缩
- CSS前置,JavaScript后置
- 减少Cookie传输
② CDN加速:CDN(ContentDistribute Network)的本质仍然是缓存,将数据缓存在离用户最近的地方,CDN通常部署在网络运营商的机房,不仅可以提升响应速度,还可以减少应用服务器的压力。当然,CDN缓存的通常都是静态资源。
③ 反向代理:反向代理相当于应用服务器的一个门面,可以保护网站的安全性,也可以实现负载均衡的功能,当然最重要的是它缓存了用户访问的热点资源,可以直接从反向代理将某些内容返回给用户浏览器。

4: 存储过程和存储函数的特点和区别?
特点:
1) 、一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2) 、对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3) 、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。
区别:
1)、函数必须有返回值,而过程没有.
2)、函数可以单独执行.而过程必须通过 execute 执行.
3)、函数可以嵌入到 SQL 语句中执行.而过程不行.
其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数.
5: HibernateDetachedCriteria类是做什么的?
DetachedCriteria和Criteria的用法基本上是一致的,但Criteria是由Session的createCriteria()方法创建的,也就意味着离开创建它的Session,Criteria就无法使用了。DetachedCriteria不需要Session就可以创建(使用DetachedCriteria.forClass()方法创建),所以通常也称其为离线的Criteria,在需要进行查询操作的时候再和Session绑定(调用其getExecutableCriteria(Session)方法),这也就意味着一个DetachedCriteria可以在需要的时候和不同的Session进行绑定。
6: SpringMVC 的工作原理 ?
a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;
b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;
c. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;
d. Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DisPatchServlet;
e. Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图, DispatcherSevlet 通过ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;
h. DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端。
7: ThreadLocal 怎么使用,说一下实现原理?
-void set(T value):设置当前线程的线程局部变量的值。
- T get()
:获得当前线程所对应的线程局部变量的值。
- void remove()
:删除当前线程中线程局部变量的值。

ThreadLocal类中有一个Map,键为线程对象,值是其线程对应的变量的副本。


import java.util.Collections;
   import java.util.HashMap;
   import java.util.Map;

public class MyThreadLocal<T> {

private Map<Thread, T> map = Collections.synchronizedMap(new HashMap<Thread, T>());

     public void set(T newValue) {
          map.put(Thread.currentThread(),newValue);
      }

      public T get() {
       return map.get(Thread.currentThread());
     }

              public void remove() {
                map.remove(Thread.currentThread());
             }

          }


面试总结:很有前瞻性的一家公司。

128 个回复

倒序浏览
感谢分享
回复 使用道具 举报
顶!!!!!!!!!
回复 使用道具 举报
6666666666666666666666666
回复 使用道具 举报
感谢分享!!!!!!!!!!!
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
感谢分享!!!!!!!!!!!
回复 使用道具 举报
回复 使用道具 举报
致橡树 来自手机 中级黑马 2018-8-28 17:23:43
9#
66666688888888
回复 使用道具 举报
回复 使用道具 举报
666666666666666666       
回复 使用道具 举报
列害了我得哥。。。。。。。。。。。。。。。。。
回复 使用道具 举报
黑马666666666666666666666666666666666666
回复 使用道具 举报
举个栗子 来自手机 中级黑马 2018-8-28 18:24:14
14#
6666666棒棒哒
回复 使用道具 举报
duanshaobo 来自手机 中级黑马 2018-8-28 18:25:10
15#
人到中年不得已,保温杯里泡枸杞
回复 使用道具 举报
感谢分享!!!!!!!!
回复 使用道具 举报
1098018910 来自手机 中级黑马 2018-8-28 18:47:54
17#
感谢感谢
回复 使用道具 举报
为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在产品上。
回复 使用道具 举报

感谢分享!!!!!!!!
回复 使用道具 举报
感谢感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马