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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SunYan 中级黑马   /  2018-7-28 13:04  /  10603 人查看  /  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奋斗一辈子,吃符号亏,上大小写的当,最后死在产品上。
回复 举报

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