最近在考虑换个环境,做了些面试题,并不难,但由于生疏,答得让自己很为难,闲话不表,将题目记下。
1、在下面表中查出所有重复的记录?
id | name | pay |
---|---|---|
1 | 张三 | 1200 |
2 | 李四 | 1655 |
3 | 王五 | 2000 |
4 | 李四 | 1655 |
猜猜看,我的回答是什么?搞笑啊
SELECT * FROM table WHERE COUNT(name) > 1
运行结果是这个样子滴
Error Code: 1111. Invalid use of group function 0.000 sec
不得不承认,自己好菜啊 (✿◡‿◡),正确的查询语句,查询出某个字段重复的记录,如下:
SELECT
*
FROM
test.pay_table
WHERE
name IN (SELECT
name -- 查询出记录数大于1的记录
FROM
test.pay_table
GROUP BY name
HAVING COUNT(name) > 1);
查询结果:
id | name | pay |
---|---|---|
2 | 李四 | 1655 |
4 | 李四 | 1655 |
2、having/order by/group by的执行顺序?
基于上面的例子,相信group by 和 having已经明白了,先有分组,然后通过having子句控制条件。
最后当然就是,order by了,因为该语句是对结果进行排序,而另外两个都是查询结果的条件。要先于该语句执行。
SELECT
COUNT(name),name,pay
FROM
test.pay_table
GROUP BY name
HAVING pay > 1500
ORDER BY CONVERT(name USING gbk); -- MySQL要想对中文排序,需要将UTF8转为GBK
查询结果
COUNT(name) | name | pay |
---|---|---|
2 | 李四 | 1655 |
1 | 王五 | 2000 |
PS:这个问题我也答错了,生无可恋啊
3、AOP使用了什么设计模式?采用了什么机制?
答:装饰模式(×)
PS:我的脑子需要装饰一下,正确答案是:代理模式。
那么代理模式和装饰模式有什么区别呢?
如果定义不清楚,请看Gof的设计模式,或者《大话设计模式》通俗易懂。
一句话区分:代理模式是为了限制类的访问,而装饰模式是为了增强类的功能。
4、jvm内存模型
5、Servlet重定向与转发的区别
6、介绍一些线程模块的理解
java.util.concurrent包
7、Java如何实现多线程
8、Java如何实现序列化
9、Java如何解析XML,DOM和SAX区别
10、inputstream的子类
二、编程题
1. 将给定集合中的数据index和value反转
a[0] = 3 → a[3] = 0
输出一个这样的新集合
2. 给定一个初始值、行数、列数,生成增量矩阵,求其与转置矩阵的乘积
示例:初始值2,行数为2,列数为3,生成如下矩阵:
2 3 4
5 6 7
转置矩阵:
2 5
3 6
4 7
求乘积为:
29 56
56 110
提示:转置矩阵不用创建这样的矩阵数组,从增量矩阵中取值即可。
三、面试实践
某招聘网的面试过程,转载如下:
面试经历:
1.用电脑写两道算法题,不是很难,然后继续做18道推理题。
2.一面面了差不多一个小时吧,很多技术上和基础问题吧。
3.二面面了20分钟吧,问的问题不多。还好。
4.人力谈薪资等等吧
面试官提出的问题
问题1:
jvm原理
生产者消费者问题解决
json大括号中括号
java为什么序列化,如何自己实现序列化externalizable
java为什么用接口
java concurrent 线程池,数据库连接为什么使用等
java创建线程
servlet有什么方式传输对象
inputstream的子类
三范式
spring 单列模式是否线程安全。
线程顺序执行, join方法
string ioc,aop
java通过某种算法逻辑,更新数据库中的每条数据,优化方法,使用多线程,每天数据加锁,或者每个线程分条
sleep和wait区别
oracle my 字段允许最长多少字符,查询条件中,可最多查询多少字符
如何找到实现某个接口的所有实现类
linux 命令使用:如何动态查询一个输出文件, 如何倒序查看文件
反射查看类中的所用成员变量及方法名。
数组 length属性,字符串length方法
算法题:
指定数组位置排序,前升序,后降序
几个数的最大公约数
原文链接:http://www.kanzhun.com/gso1087027.html