这是我遇到的最好的面试官了,会引导提问,每个提问之前,都会问这方面有了解吗,不要太温柔,而且很耐心!点赞!
正题:
1、介绍一下简历中的项目,
2、做项目的感受、收获,项目中的算法如何实现的;
3、因为项目用到了spring spring MVC 问了对这些的理解;
4、spring 相比new的好处?(ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。适合扩展性的周期长的项目,很小的项目使用spring反而会增加开发的负担。)
5、spring MVC 提到了DispatchServlet ,问当用户有多个页面请求时,比如请求美团、京东、页面时,是如何区分的?(处理器映射器和处理器适配器,)映射如何实现(答案见下图)
6、比较了解哪个数据库?数据库的引擎有了解吗?(这个我没有)数据库索引的结构是B+树,有了解吗?(说了B+的结构),使用B+树有什么好处?为什么?(底层的东西不太了解)
7、JVM内存模型,主要问了堆和栈的区别;
8、垃圾回收算法有哪些?(分代收集)问了我 复制算法和标记清理的缺点?()复制的话是怎么复制的?
9、内存溢出(除了程序计数器都会有内存溢出)和内存泄漏(不再引用的对象占用内存空间,面试官提示我现在的引用计数法和可达性分析法可以做到无内存泄漏,大概是这个意思吧),
10 、概率题,十层楼,电梯每层只开一次,每一层门口都放钻石,每一层钻石价值不等,如何以较大的概率拿到大的钻石?
(样本空间 37% ,感觉就是试错率)
11、有什么问题要问?(面试官很好,最后耐心地回答了我的问题,感谢!)
还有很多不足,加油!
<!--DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,
把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。-->
<!-- 加载springMVC的核心分发器 DispatcherServlet -->
<!--使用Spring MVC,配置DispatcherServlet是第一步。DispatcherServlet是一个Servlet,,所以可以配置多个DispatcherServlet-->
<!--DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,
把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。-->
<servlet>
<servlet-name>springmvc</servlet-name><!--在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--指明了配置文件的文件名,使用默认配置文件名,l配置文件。-->
<init-param>
<param-name>contextConfigLocation</param-name>
<!--其中<param-value>**.xml</param-value> 这里可以使用多种写法-->
<!--1、不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml-->
<!--2、<param-value>/WEB-INF/classes/dispatcher-servlet.xml</param-value>-->
<!--3、<param-value>classpath*:dispatcher-servlet.xml</param-value>-->
<!--4、多个值用逗号分隔-->
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--这个Servlet的名字是springmvc,可以有多个DispatcherServlet,是通过名字来区分的。每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中.-->
<!--ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了:P,Spring把Bean放在这个容器中,在需要的时候,用getBean方法取出-->
<servlet-name>springmvc</servlet-name>
<!--Servlet拦截匹配规则可以自已定义,当映射为@RequestMapping("/user/add")时,为例,拦截哪种URL合适?-->
<!--1、拦截*.do、*.htm, 例如:/user/add.do,这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。-->
<!--2、拦截/,例如:/user/add,可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。 -->
<url-pattern>*.action</url-pattern> <!--会拦截URL中带“/”的请求。-->
</servlet-mapping>