小菜鸟之面试题中
Posted czg-0705
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小菜鸟之面试题中相关的知识,希望对你有一定的参考价值。
感谢四两数字
1 1 转发和重定向的区别? 2 转发:浏览器向服务器发送请求,服务器再向目标资源发送请求,返回响应内容给服务器,服务器再给浏览器,所以浏览器根本不知道服务器返回的内容是从哪里来的。所以转发的地址栏是不变的;比如:借钱事件- a向b借钱,b向自己某好友借钱然后给a,a不根本不知道钱是哪里来的。 3 重定向: 4 浏览器向服务器发送请求,服务器返回一个状态码给浏览器,告诉它重新去请求新url。浏览器重新发送新url,成功访问到目标资源,此时地址栏中url自动变成新的url。 5 6 2 JSP(本质就是servlet类)的 九大内置对象? 7 out / request response session / 8 page /pageContext / application 9 config /exception 10 11 3 get和post的区别? 12 在http协议中,get和post是两种发送请求的方法 13 http就是交警 14 http的底层是tcp/ip 15 T CP就像汽车, 16 get 和post 表示 车型,get类型的车要求将货物(参数数据)放在车顶上,方便识别 17 post类型车要求经货物放在车厢里(request Body)) 18 浏览器 和服务器 就好比两个不同的运输公司 19 区别 20 get能被缓存,刷新时不会重新提交,可收藏为书签,参数保存在浏览器历史中 21 get向url中添加数据时,url的长度不能超过2048字节; 22 get不安全,数据在url中,所有人可见。 23 24 4 常用的web服务器有哪些? 25 微软的IIS 26 /Apache服务器 27 /Tomcat服务器 28 /nginx服务器(engine x:http和反代理的服务器) 29 30 31 5 jsp中的四种作用域是什么? 32 page 作用范围是整个网页 33 request 作用范围是一次请求 34 session 作用范围是一次会话,包含多次请求 35 application 作用范围是整个web项目 36 37 6 实现会话跟踪技术有哪些? 38 http协议本身是无状态的,如何标识请求是哪个用户发送的? 39 会话跟踪就是先给用户分配唯一ID。将id添加到请求数据中进行传递。 40 技术有: 41 url重写:将ID添加都url中标识一个会话 42 设置表单隐藏域 43 cookie 44 HttpSession 45 46 7 过滤器的有哪些作用和用法? 47 过滤器是一个驻留在服务器端的web组件,可以拦截请求和响应信息,对信息进行修改等操作;应用:字符编码/加解密/用户身份判断/统计文件下载次数等 48 49 8 监听器有哪些作用? 50 监听的是对象的状态变化 51 监听对象的创建/销毁/对象属性的增删改等状态信息,根据状态信息的变化获得一些额外信息,比如统计网站的在线人数/文件的下载量等等 52 53 9 你的项目中使用过哪些JSTL的标签库?有什么好处? 54 核心标签库<c:if> <c:choose><c:when><c:foreach> 55 好处: 使jsp页面的内容和逻辑进行分离; 56 57 10 说一下表达式语言(EL)的隐式对象及其作用 58 59 60 11 Java Web开发的Model1和Model2 分别指的是什么? 61 model1是指 jsp 显示层+javabean业务逻辑层 62 model2 是指 mvc m:model层 javabean层(service+dao) 63 v:view层 是指jsp层 64 c:control层 处理请求和响应层 65 66 67 12 如何实现文件的上传和下载? 68 使用第三方jar包:commons-fileupload 69 70 13 静态包含和动态包含的区别? 71 静态包含:<@ include file=> 先加载,后执行 72 动态包含:<jsp:include page=> 先执行,后加载 73 74 14 什么是web service? 75 是指 跨平台/跨语言的规范,比如c语言开发的应用程序A和java开发的B可以实现相互调用 ,比如jersey框架实现restfull风格 76 77 15 什么是orm? 78 object relationship mapping 对象关系映射技术 解决什么问题:Java实体中的成员变量和数据库中表的对应关系 79 80 16 举一个多对多关联的例子? 81 商品对订单 /学生对课程 82 83 17 myBatis中#和$的区别? 84 用#的场景较多, #将传入的的数据变成带引号的字符串 85 $将传入的数据直接嵌入到sql语句中,这样会导致sql注射攻击的危害, 86 比如 传入 where 1=1,这样就显示所有信息 87 88 18 mybatis中映射文件的命名空间有什么作用? 89 避免sql语句唯一标识符重复产生冲突,产生每个sql语句都有一个唯一标识符id,我们很难保证这样i 90 d不重复,所以给映射定义一个命名空间,只要在命名空间内id不重复就可以了 91 92 19 mybatis中的动态sql语句有什么作用? 93 查询条件不固定,但是可以通过一条sql语句实现所有可能的查询结果,就叫动态sql 94 通过<if test=></if>标签、<choose><when test=></when><otherwise></otherwise></choose>标签、 95 <foreach collection= item= open= separator= close=></foreach>标签 96 97 20 什么是控制反转和依赖注入? 如何实现? 98 以前创建对象是通过 程序代码 直接创建; 99 现在是通过外部容器进行创建,实现了控制权的转移 100 依赖注入:以前对象与对象的依赖组合关系,需要程序代码进行编写调用 101 现在只有在容器中直接注入就可以了,不需要进行程序代码的编写 102 注入方式有:setter注入、构造器注入、接口注入 103 好处:就是实现低耦合,容器负责 创建对象 和 参数赋值 等工作,便于后期变动的话直接在容器中维护。 104 105 21 Spring中bean的作用域有哪些?bean(创建的对象)作用域就是在什么范围有效 106 Spring1.0版本有 singleton/prototype(原型) 107 Spring2.0版本有 request/session/globalSession 108 109 22 什么是AOP的连接点/切入点/增强/切面? 110 连接点:就是程序执行的某个特定位置。比如方法调用前/方法调用后/方法抛出异常后等 111 切入点;是指在哪些连接点处 进行切入操作 点叫做切入点 112 增强:增加代码,是功能变强。是指织入到原代码的增加代码,起到增强原代码的功能的作用, 113 增强分为前置/后置/返回后/异常/环绕增强 五大增强 114 切面:是切入点和增强的结合体 115 116 23 spring的自动装配方式有哪些? 117 通过byname bytype /constructor 118 119 24 Spring中如何通过注解来配置bean? 120 先扫描 <context:component-scan base-package=""> 121 后添加注解来标注 @Repository @Service @Controller @Component 122 123 25 Spring 支持的事务管理类型有哪些?你在项目中选择哪些? 124 编程式事务管理 声明式事务管理 125 126 26 如何在web项目中配置spring容器? 127 在web.xml文件中配置 1 spring容器的路径 2配置上下文加载监听器,当容器加载是web项目能够监听到 128 <web-app> 129 <context-param> 130 <param-name>contextConfigLocation</param-name> 131 <param-value>classpath:applicationContext.xml</param-value> 132 </context-param> 133 <listener> 134 <listener-class>.ContextLoaderListener</listener-class> 135 </listener> 136 </web-app> 137 138 27 如何在web项目中配置springmvc? 139 1 配置前端控制器 DispatcherServlet 和对应的映射 140 <web-app> 141 <servlet> 142 <servlet-name>example</servlet-name> 143 <servlet-class>.DispatcherServlet</servlet-class> 144 </servlet> 145 <servlet-mapping> 146 <servlet-name>example</servlet-name> 147 <url-pattern></url-pattern> 148 </servlet-mapping> 149 </web-app> 150 151 28 Springmvc的工作原理是什么? 152 前端控制器 处理器 处理适配器 模型视图对象 153 Dispatcherservlet Handler HandlerAdapter ModelAndView 154 155 29 如何在Spring 容器中配置数据源? 156 法一:dbcp database connection pool 配置 数据库连接池配置 157 配置数据源文件的路径 158 配置核心类BasicDataSource 159 <context:property-placeholder location="database.properties"/> 160 <bean id="dataSource" class="x.y.dbcp.basicDataSource" destroy-mehod="close"> 161 <property name="driverClassName" value="${jdbc.driverClassName}"/> 162 <property name="url" value="${jdbc.url}"/> 163 <property name="username" value="${jdbc.username}"/> 164 <property name="password" value="${jdbc.password}"/> 165 </bean> 166 对数据源进行事务管理:DataSourceTransactionManager 167 <bean id="txManager" class="x.y.DataSourceTransactionManager"> 168 <property name="dataSource" ref="dataSource"/> 169 </bean> 170 171 法二:c3po配置 一般不用 172 173 30 如何配置 事务增强 tx:advice(通过aop技术给很多方法进行事务管理)? 174 配置增强内容 和配置切点 然后把 增强和切点结合起来 175 1 对哪里的方法进行事务增强? service层中的方法 176 <bean id="xxservice" class=".xxxService"/> 177 现有引进一个事务类 178 <bean id="txManager" class="DataSourceTransactionManager"> 179 <property name="dataSource" ref="dataSource"/>//还要补充数据源bean 180 </bean> 181 2 对方法进行哪些增强功能? 182 <tx:advice id="txAdvice" transaction-manager="txManager"> 183 <tx:attributes> 184 <tx:method name="get*" only-read="true"/> 185 <tx:method name="*"/> 186 </tx:attributes> 187 </tx:advice> 188 3 切入点在哪里? 189 <aop:config> 190 <aop:pointcut id="servicePointcut" expression="excution(*.x.y.Classname.*(..) )"/> 191 <aop:aspect advice-ref="" pointcut-ref=""/> //切面 aspect 192 </aop:config> 193 194 195 31 spring的好处有哪些? 196 1 非侵入式 197 2 控制反转 依赖注入 198 3 面向切面技术 199 4 支持事务管理 200 5 提供springmvc的支持 201 202 32 Spring容器配置bean的方式有哪些? 203 1基于xml文件进行配置bean 204 2 基于注解进行配置bean---在成员变量上添加一个注解@component等注解标识 205 3 基于java程序配置bean--- .getbean(Person.class) 206 207 33 依赖注入如何注入集合属性? 208 通过<list><set><map><pros>标签分别注入列表/集合/映射/键值对 209 210 34 spring框架中的bean的生命周期是什么? 211 1实例化bean 212 2属性注入 213 3bean提供服务 214 4销毁bean 215 216 35 spring的自动装配有哪些限制? 217 使用构造器或者setter方法注入,会覆盖自动装配的依赖关系 218 基本数据类型的值/String的字面量/类的字面量无法通过自动装配注入 219 优先选择显式注入,不要选择自动装配注入 220 221 36 大型网站在架构上应该考虑哪些问题? 222 分层 223 分布式与集群 224 冗余 225 缓存 通过空间换时间 226 异步 ajax技术 227 228 37 网站前端优化的技术有哪些? 229 设置http响应头中的属性expires/cache-control,将css/javascript/图片缓存在浏览器中 230 减少cookie的传输 231 232 38 应用服务器优化技术有哪些? 233 分布式缓存 本质就是哈希表 234 异步操作 235 使用集群 236 代码优化 多线程 NIO 237 资源复用 238 239 39 什么式xss攻击?什么是sql注入攻击?什么是csrf攻击? 240 ———————————————— 241 版权声明:本文为CSDN博主「四两数字先生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 242 原文链接:https://blog.csdn.net/Java_stud/article/details/91129728
以上是关于小菜鸟之面试题中的主要内容,如果未能解决你的问题,请参考以下文章