笔试题总结(一)

1,对集合进行排序,有哪些方法?

实现 comparable 接口

自定义排序(Comparator接口、compare方法)

2,用Java代码实现“每隔一分钟在控制台输出一次当前系统时间”,请写出你的实现或思路

使用while循环

获取当前时间,使用“hh:mm:ss”格式化

输出时间,当前线程沉睡60000毫秒后,继续输出

3,请写出几种单列模式的写法

懒汉式单列模式:在类加载时不初始化

饿汉式单列模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。

4,Java编译后产生了NetOrder.class、NetOrder$1.class、NetOrder$2.class三个文件,第一个是类NetOrder.java译后的文件,那后两个是什么文件?

内部类的class文件

5,什么是值传递和引用传递?Java中是值传递还是引用传递

值传递:方法在调用时,传递的参数是按值的拷贝传递

引用传递:方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。

6,请列出你常用的jquery方法

Filter()方法将匹配元素集合缩减为匹配指定选择器的元素。

text()    html()    val()

css()

parent()    children()    parents()    find()

eq()    siblings()    index()

height()    width()

add()    remove()    append()    appendTo()    prepend()    prependTo()

7,Vue全家桶包含什么?

vue-cli:也叫脚手架,官方定义为Vue.js 开发的标准工具!

Vue Router: 是 Vue.js 官方的路由管理器。

Vuex: 是一个专为 Vue.js 应用程序开发的状态管理模式。

Axios: 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

8,请列出你常用的数据库函数(不限于MySQL与oracle)

数学函数、字符串函数、时间函数、聚合函数

select count(*) from 表名;//count是非空值计数

SELECT SUM (字段) FROM 表;//求总和

SELECT AVG (字段) FROM 表;//求平均值

SELECT AVG (字段) FROM 表;//求平均值

SELECT MIN(字段) FROM 表;//获取最小值

9,如何实现乐观锁

总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。

10,多线程并发是什么问题?有哪些方法解决?

高并发是指较多用户同时访问服务。高并发可以由多线程实现,但是多线程不代表就是高并发。

解决方法:

使用了LVS + Nginx四台机器进行负载均衡

用了Spring + Redis实现4台Tomcat的Session共享

答题页面静态化,

用户提交答卷后临时存放在Redis中,直接返回结果。

定时器每隔一段时间将Redis数据保存到MySQL

11,现有N个线程在运行,如何监听到N个线程执行结束的事件?

线程的创建主要有两种方式:使用 Thread 类和 Runable 接口。

线程的监听

为了能够控制多线程中个线程的具体情况,就需要对各个线程的执行进行监听,这可以通过创建一个监听线程来实现实时监控其他线程的目的

12,SpringBoot常用注解

@SpringBootApplication:申明让spring boot自动给程序进行必要的配置

@ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。

@Controller:用于定义控制器类

@RestController:用于标注控制层组件

@Import:用来导入其他配置类。

@ImportResource:用来加载xml配置文件。

@Autowired:自动导入依赖的bean

@Service:一般用于修饰service层的组件

@Bean:用@Bean标注方法等价于XML中配置的bean。

@Value:注入Spring boot application.properties配置的属性的值。示例代码:

@Inject:等价于默认的@Autowired,只是没有required属性;

@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

13,如何实现URL路径传递参数

非关键字参数
url地址访问格式:/路径/路径/参数
urls正则的定义:/路径/路径/(参数匹配的正则)

注意:

如果要获取传递进来的参数,必须给对应的正则加上()才可以提取

    如果url中有参数,就必须给视图函数加上参数,否则报错

14,Servlet生命周期

加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁

15,代码阅读

class HelloA {
	public HelloA() {
		System.out.println("HelloA");
	}
	{System.out.println("I'm A class");}
		static { System.out.println("static A");}
	}
public class HelloB extends HelloA{
	public HelloB() {
		System.out.println("HelloB");
	}
	{System.out.println("I'm B class");}
	static {System.out.println("Hello B");}
public static void main(String[] args) {
		new HelloB();
}
}	

请写出输出语句

I'm A class

HelloA

I'm B class

HelloB

16,通过SQL语句将表1格式转换为表2格式

select name,
sum (case subiect when ‘score’ then 0 else 0 end) [name]
from (表1)
group by (表2)

17,代码阅读

public class Fu {
	public int num = 10;
	public Fu() {
		System.out.println("fu");
	}
public class Zi extends Fu{
	public int num = 20;
	public Zi() {
		System.out.println("Zi");
	}
	public void show() {
		int num = 30;
		System.out.println(num);
		System.out.println(this.num);
		System.out.println(super.num);
	}
class ExtendsTest {
	public static void main(String[] args) {
		Zi z = new Zi();
		z.show();
	}

请写出输出是什么

fu

Zi

30

20

10

18,现有学生表如下(表名:score)

 要求写一个SQL语句,删除除了编号不同其他都相同的学生的记录

delete from score where 编号 not in( select min(编号) 编号from score group by code
) ;

19,假设有一张表示成绩的表score:

 要求列出所有各门功课都在80分以上的学生的姓名

select Name,Subject,fenshu from score group by name
having count(score) = sum(case when score > 80 then 1 else 0 end)

20,请写出匹配“长度为 8 - 10,以字母开头,包括字母、数字、下划线的密码”的正则表达式。

^[a-zA-Z]\w{7,9}$

21,回答以下代码,alert的值分别是多少?

<script type="text/javascript">
			var a = 100;
			function test(){
				alert(a);//100
				a = 10;
				alert(a);//10
			}
			test();
			alert(a);//10
		</script>

22,有如下一段代码,请写出输出值?

private static void change(StringBuffer str11, StringBuffer str12) {
	    str12 = str11;
	    str11 = new StringBuffer("new world");
	    str12.append("new world");
	}
	public static void main(String[] args) {
	    StringBuffer str1 = new StringBuffer("good ");
	    StringBuffer str2 = new StringBuffer("bad ");
	    change(str1, str2);
	    System.out.println(str1.toString());
	    System.out.println(str2.toString());
	} 

good new world

bad

23,单例模式有几种?请代码实现至少两种。

饿汉式单例类(饿汉式则是用空间来换时间,线程安全。)

package pattern.singleton;
//饿汉式单例类.在类初始化时,已经自行实例化 
public class Singleton1 {
    //私有的默认构造子
    private Singleton1() {}
    //已经自行实例化 
    private static final Singleton1 single = new Singleton1();
    //静态工厂方法 
    public static Singleton1 getInstance() {
        return single;
    }
}

懒汉式单例类

懒汉式则用时间来换空间,非线程安全.可以使用synchronized声明访问点,但是工作效率低.

 package pattern.singleton;
//懒汉式单例类.在第一次调用的时候实例化 
public class Singleton2 {
    //私有的默认构造子
    private Singleton2() {}

    //注意,这里没有final    
    private static Singleton2 single;

    //静态工厂方法 
    public static Singleton2 getInstance() {
         if (single == null) {  
             single = new Singleton2();
         }  
        return single;
    }
}

24,sql 内连接的两种写法?

内连接查询:只查询左边表有且右边表也有的数据,本质上是依据外键关系,在笛卡尔积查询的基础上过滤出正确的数据。

语句有2种形式:

Select * from dept ,emp where dept.id=emp.dept_id
Select * from dept inner join emp on dept.id =emp.dept_id

25,java数组({"a","d","b","c","c","d","e","e","e","a"})去重,请代码实现。

public static void main(String[] args) {
		String[] arr={"a","d","b","c","c","d","e","e","e","a"};
		//数组去重:
		// (将数据放入到新的List里面)
		List<String> list = Lists.newArrayList();
		for (int i = 0; i < arr.length; i++) {
			if (!list.contains(arr[i])) {
				list.add(arr[i]);
			}
		}
		list.stream().forEach(System.out::println);

26,如下代码是否存在问题? 请说明?

public void retrieveObjectById(Long id){
        try{
            //…抛出 IOException 的代码调用
            //…抛出 SQLException 的代码调用
        }catch(Exception e){
            throw new RuntimeException(“Exception in retieveObjectById”, e);
        }
    }

已经try - catch 了就不用 throw

27,有以下三张表(学生表、课程表、成绩表),请写出对应的sql(考察点:sql)

Student 学生表
		CREATE TABLE student (
		  sid varchar(10) NOT NULL,
		  sName varchar(20) DEFAULT NULL,
		  sAge datetime DEFAULT '1980-10-12 23:12:36',
		  sSex varchar(10) DEFAULT NULL,
		  PRIMARY KEY (sid)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8;
		
		Course 课程表
		CREATE TABLE course (
		  cid varchar(10) NOT NULL,
		  cName varchar(10) DEFAULT NULL,
		  tid int(20) DEFAULT NULL,
		  PRIMARY KEY (cid)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8;

		SC 成绩表
		CREATE TABLE sc (
		  sid varchar(10) DEFAULT NULL,
		  cid varchar(10) DEFAULT NULL,
		  score int(10) DEFAULT NULL
		) ENGINE=InnoDB DEFAULT CHARSET=utf8;

问题:

查询“001”课程比“002”课程成绩高的所有学生的学号;

select a.S# from SC a, SC b where a.S#=b.S# and a.C#='001' and b.C#='002' and a.score>b.score

查询平均成绩大于60分的同学的学号和平均成绩;

select sid,avg(score) from SC group by sid having avg(score)>60;

查询所有同学的学号、姓名、选课数、总成绩;

select a.sid,a.sname,count(b.cid),sum(b.score) from Student as a left join SC as b on a.sid=b.sid group by sid,sname;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值