练习题

(1) 在数据库怎么复制表数据和表结构?

CREATE TABLE 新表 SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。

(2) 页面的标签有哪些,常用的标签的属性?

基本标签

		1.<html>与</html>之间的语句用来描述网页
		2.<head>标签用于定义文档的头部,他是所有头元素的容器</head>	
			(文档的头部描述了文档的各种属性和信息,包括文档的标题,在web中的位置以及和其他文档的关系)
		3.<title>定义文档的标题</title>
		4.<base>为页面上的所有链接规定默认地址或默认目标。
				( target属性规定了在何处打开页面中所有的链接。)
		5.<meta>			空元素,可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。服务器端接收到信息之后,根据<meta>中的信息进行相应处理。
		6.<link>
		( rel属性规定当前文档与被链接文档之间的关系。
          type属性规定了文档类型
          media属性指定目标文档在哪种设备上起作用)
		7.<body>与</body>之间的文本是可见的页面内容

常用属性

required 该标签内容必须填写
minlength 输入最短长度
maxlength 输入最长长度
readonly 只读,无法点击,可以复制
disable 禁用,背景色变灰色,无法点击,无法复制

(3) Jsp内置对象大小的排序?

内置对象范围从小到大的顺序

page     request     session    pageContext     application
request常用方法

setAttribute

getAttribute        

getAttributeNames   获取控件名

 getParameter        获取参数

getCookies               获取Cookie

getParameterValues     获取控件值

getMethod              获取方法  get还是post

getQueryString      获取字符串    例:  name  2231 & password 4545

response

addCookie       setContentType        addCookie       sendRedirect

flushBuffer      setHeader()

比较重要的有      setContentType:   响应回来的格式

                                  sendRedirect:       重定向也就是跳转       含义就像超链接      但是超链接是从浏览器到服务器端       而重定向是从服务器端到浏览器端

重定向之后       request 的值不会传递到新页面因为相当于两次访问服务器       而forward(转向)是一次访问服务器

所以重定向: 它会丢失所有的请求参数和request范围的属性,它将产生第二次请求,与前一次请求不在同一个request范围。


session      比较重要的方法有  

getAttribute

getAttributeNames

removeAttributes

setAttribute

application 比较重要的方法      

做计数器记录访问网站的人数

getAttribute   getAttributeNames  getINitParameter

getServletInfo()      setAttribute等

application  是   servlet 配置中生成的   所以服务器开启就一直存在

page的功能由pageContext替代了  page对象相当于this   当前页

pageContext  

可以转换对象使用

pageContext.getSession();  相当于session        session = pageContext.getSession();

pageContext.getRequest()   相当于request

pageContext.getSession().getAttribute(“sessionValue”);

等效于

pageContext.getAttribute(“sessionValue,PageContext.SESSION_SCOPE” );

application = pageContext.getServletContext();

(4) From表单提交的方法、属性,数据量大的时候用什么方法提交?

 get post两种
(form表单提交		使用ajax提交		使用前端ui的form插件提交		form表单提交文件/图片)

当属性,数据量大的时候用post方法提交

(5) 翻译了一段关于apache shiro 的英文文章。

(6) 利用css写一个页面(height:35 width:20)内容可以自己编写。

.center{
margin:0 auto;
width:20px;
height:35px;
background-color:blue;
}<!--我加了一个背景色-->
<div class="center"><h1>你好!</h1></div>

(7) 手写一JavaScript的方法。

	-js常用函数。 
        ** alert(); 普通弹出框
        ** document.write(); 向页面(body标签) 写入内容
        ** console.log();    向控制台输出
        ** typeof();查看当前数据类型
        ** length 返回字符串的长度
        ** bold(); 字体加粗
        ** fontcolor(red); 设置字体的颜色
        ** fontsize(1-7); 设置字体大小
        ** link();  将字符串设置成超链接 (字符串.link(链接地址);
        ** sub()  sup()  将文 0-字设置成上标或下标 比如设置度数
        ** prototype  向对象函数中添加方法 
            例:function Person(){    创建对象函数
                }
                Person.prototype.getal(){ 添加方法
                    alert(123);
                }
                new Person().getal(); 调用函数  结果弹出123
                
	- 与java相似的函数:
        ** concat()  连接字符串  将 "123" 与 "456" 连接在一起(个人感觉没什么用)
        ** charAt(索引)  返回指定位置的字符串,如果索引有误 返回空字符串
        ** indexOf(字符串); 返回指定位置的字符串索引  如果不存在返回-1
        ** split(以什么切  分); 返回字符串数组
        ** replace(); 传递两个参数,第一个是原始字符  第二个是要替换成的字符
        ** substr() 同样也是2个参数, 从第几个开始,向后截取几个
        ** subString() 两个参数从第几位开始,到底几位结束 不包含做后一个

(8) Jstl常用标签属性?

<!-- 输出常量 -->
<c:out value="This is my first JSTL!"></c:out><br>
<!-- 输出变量 -->
<%session.setAttribute("name", "Robert_Wang"); %>
<!-- 如果name不存在,则输出默认值 -->
<c:out value="${name}" default="error"></c:out><br>

(9) 用java写一个数组的快速排序?

public class Demo9 {
	public static void main(String[] args){
		int[] arr={4,2,9,3,5,8,7,1,6};
		int start=0;
		int end=arr.length-1;
		quickSort(arr,start,end);
		printArray(arr);
	}
	
	public static void quickSort(int[] arr,int low,int high){
		int start=low;
		int end=high;
		int key=arr[low];
		while(start<end){
			//从后往前开始比较
			while(end>start && arr[end]>=key)//如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
				end--;
			if(arr[end]<=key){
				int temp=arr[end];
				arr[end]=arr[start];
				arr[start]=temp;
			}
			//从前往后比较
			while(end>start && arr[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置,然后又从后往前比较
				start++;
			if(arr[start]>=key){
				int temp=arr[start];
				arr[start]=arr[end];
				arr[end]=temp;	
			}
		//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
		}
		//递归
		if(start>low) 
			quickSort(arr,low,start-1);
		if(start<high) 
			quickSort(arr,end+1,high);
				
	}
	
	//打印数组
		public static void printArray(int[] arr){
			System.out.print("[");
			for(int i=0;i<arr.length;i++){
				if(i!=arr.length-1)
					System.out.print(arr[i]+" ");
				else
					System.out.print(arr[i]+"]");
			}
		}
}

(10) 手写数据库sql语句,给定三张表(三表联查,两表联查,删除相关用户的所有订单)?

三表查询

select A.comment_id,A.img,A.content,A.date,A.shop_id,A.user_id,B.avatar,B.name
 from A inner join B on A.user_id=B.user_id 
 inner join C  on A.shop_id = C.shop_id 
 where C.shop_id = ?;
 #
 ①、A、B、C分表代表不同的三张表
 ②、 where C.shop_id = ?代表的是依据什么条件查询。

两表查询

select A.coverimg,A.title,A.price,A.product_like,A.shop_id
 from AINNER JOIN  B on A.shop_id=B.shop_id 
 where B.shop_id=?
  #
 ①、A、B分表代表不同的两张表
 ②、 where B.shop_id = ?代表的是依据什么条件查询。

(11) 写一个计算三角形的算法程序?

(12) 谈谈你对spring和springmvc的了解?

从这三步讲

1.spring的工作原理
spring 是按照设计模式精心打造的,它实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常使用它的子类ApplicationContext(也是接口)。

spring的核心是IOC(反转控制)容器,IOC也是一种编程思想,用于实现模块之间的解耦,在Spring中它的作用是对对象的创建,维护和销毁等生命周期的控制。IOC:把对象的创建、初始化、销毁交给spring来管理,而不是由开发者控制,实现控制反转。

spring是一个大的工厂类,spring的特点就是基于配置,在其配置文件中通过<bean>元素来创建实例对象。

根据业务逻辑来看,对象经常不是独立的,一个对象的创建往往涉及另一个对象的创建,当然这个对象也要由IOC容器负责,负责的方式就是依赖注入DI,通过反射机制实现。有三种注入方式:(1)接口注入(2)构造器注入(3)Setter方法注入。

2.spring的核心技术
spring的核心技术有:IOC,AOP

3.spring的优缺点
优点
spring中避免了关键字new造成的耦合问题。

spring本身就是一个工厂,不需要再编写工厂类了。

spring不需要进行明确的引用关系的传递,直接通过配置完成

所有框架几乎都可以在spring中整合在一起使用。

spring编程=factory设计模式+proxy设计模式
缺点
spring基于大量的xml 配置文件,使得我们花了大量的时间放在配置上,拖慢了开发的进度,springboot 问世后,提倡代码优于配置解决了这个问题。

spring 的内容太庞大,随便打断点查看的时候会出现十几二十层代码,阅览性不强,在实际开发的过程中spring的角色更像是胶水一样,充当整合各种技术的角色,同时作为bean的容器。


(13) springmvc的工作流程?

1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。
2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)
3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller
4、HandlerAdapter处理器适配器去执行Controller并得到ModelAndView(数据和视图),并层层返回给DispatcherServlet
5、DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,然后返回真正的视图。
6、DispatcherServlet将模型数据填充到视图中
7、DispatcherServlet将结果响应给用户

组件说明

DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度。
HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应的后端处理器 Handler。也就是说它知道处理用户请求的后端处理器,但是它并不执行后端处理器,而是将处理器告诉给中央处理器。
HandlerAdapter:处理器适配器,它调用后端处理器中的方法,返回逻辑视图 ModelAndView 对象。
ViewResolver:视图解析器,将 ModelAndView 逻辑视图解析为具体的视图(如 JSP)。
Handler:后端处理器,对用户具体请求进行处理,也就是我们编写的 Controller 类。

(14) MyBatis与hibernate的区别?

mybatis:入门简单,程序容易上手开发,节省开发成本 。mybatis需要程序员自己编写sql语句,是一个不完全 的ORM框架,对sql修改和优化非常容易实现 。

mybatis适合开发需求变更频繁的系统,比如:互联网项目。

hibernate:入门门槛高,如果用hibernate写出高性能的程序不容易实现。hibernate不用写sql语句,是一个 ORM框架。

hibernate适合需求固定,对象数据模型稳定,中小型项目,比如:企业OA系统

(15) 常用的MyBatis注解?

	 mybatis的常用注解
	(1)与CURD相关的操作
		@Select(value = “sql语句”),
		@Update(value = “sql语句”),
		@Insert(value = “sql语句”),
		@Delete(value = “sql语句”)

(16) 为什么要用Shiro框架?

既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。

shiro使用广泛,shiro可以运行在web应用,非web应用,集群分布式应用中越来越多的用户开始使用shiro。

java领域中spring security(原名Acegi)也是一个开源的权限管理框架,但是spring security依赖spring运行,而shiro就相对独立,最主要是因为shiro使用简单、灵活,所以现在越来越多的用户选择shiro。

(17) Quartz 定时任务中常用的cron表达式?

每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

(18) mysql数据库中的分页?

select * from table limit (start-1)*limit,limit; 其中 start 是页码,limit 是每页显示的

  第一页select * from 表名  limit 0,5
  第二页select * from 表名  limit 5,5
  第三页select * from 表名  limit 10,5
  第四页select * from 表名  limit 15,5

  ......

  第n页  每页x条 select * from 表名 limit (n-1)*x,x

(19) 内链接与外连接的区别?

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

全外连接:左外连接 union 右外连接。

(20) 聚合函数有哪几个?

1 count : 行数

2 sum : 总和 (求总和)

3 avg : 平均值 

4 max 最大值

5 min : 最小值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值