前言
目前公司闲,没有新产品开发,都是一些维护工作,于是我提出了离职,开始了面试之路,抱着一个面试就是学习的心态去面试的,当然了,也是希望能拿到大公司的offer,大概面试了一个月左右的时间!!!
一共面试了8家,拿了3个offer,自己觉得不太满意,因为没有准备太充分,每次准备又不知道准备什么,想着先面试面了之后就知道如何准备了,其实这是很伤的,可能会错失理想的公司,拿到的offer基本公司都不大,去了一家规模最大,薪资最高并且离我住的地方最近的一家公司,并且还是做"金融"的,算的上是"天时地利人和"吧,哈哈~~
面试前的注意点
- 简历: 简历必须多动脑筋,尽量知识面多一点.
- 想清楚离职的原因,下一家想找什么样子的公司. 根据自己的真实情况,可以海投,收到面试邀请一定要查一查在过去.
- 投简历: 我投简历的时候都是海投,因为自己学历不太好,很容易被拒绝,所以投的多才能有更多的面试机会,某一些要求比较高的也可以投,因为,投简历不用花钱~~
- 准备工作: 其实我没怎么准备~~之前看到一些jdk的源码,说实话对这次面试还有所帮助的, 然后每面试完一家之后记录下来,晚上找找答案, 会遇到重复的问题的,如果没有遇到,当学习也是很不错的
- 我的理解: 问问题就是这样,由浅入深,从各种方面去问,比如: 问你集合的理解? list与set的区别? ArrayList与linkedList有啥区别? 能解释一下ArrayList的add方法吗? ,只是举例表达出问题的由浅入深,所以面广,知识点深,那么何愁offer没有,哈哈.
面试知识点
- 有一个字符串里面有中文和英文,如何切割时保证中文不被切割?(代码实现)
- jdbc的加载步骤说一下(我也是蒙蔽了~~)
- statement与praredStatement的区别
- 创建线程的3种方式
- 线程池的原理
- 怎么手写一个线程池
- spring boot的定时器时如何实现的
- spring boot的两大特性
- 说一说订单管理需要怎么样去设计表
- spring mvc的工作流程
- hibernate与mybatis 的一些区别
- 聊一聊arrayList种的add方法
- md5加密的实现
- md5如何完成可逆的
- 介绍一下异常体系
- 说4种常见的运行时异常以及为什么会发生
- git与svn的区别
- git中分支提交到另一个分支出现冲突怎么解决
- sql题目也遇到了一些(这里就不描述了....)
- 说一说你工作中遇到的最大的问题?如何解决的
- 换工作的原因(几乎每一家都有问到)
- 说一下你的优势
上面就是我面试的一些(印象比较深的)问题
找了一下sql面试题图:
下面是我附上的答案,经过我测试的~~如果有错误的请留言~~
-- 1查询下面表中 id重复的(通过count计数的方式)
CREATE TABLE t_demo1(
id INT
); INSERT INTO t_demo1 VALUES(1); INSERT INTO t_demo1 VALUES(2); INSERT INTO t_demo1 VALUES(3); INSERT INTO t_demo1 VALUES(4); INSERT INTO t_demo1 VALUES(4); -- 答案
SELECT * FROM t_demo1 WHERE id IN(
SELECT id FROM t_demo1 GROUP BY id HAVING COUNT(id) > 1
) -- 2查询出表t_demo1中有但表t_demo2中没有的记录
CREATE TABLE t_demo2(
id INT
);
INSERT INTO t_demo2 VALUES(3); INSERT INTO t_demo2 VALUES(4); SELECT * FROM t_demo1 SELECT * FROM t_demo2
-- 答案
SELECT * FROM t_demo1 WHERE id NOT IN(
SELECT DISTINCT t2.id FROM t_demo1 t1 RIGHT JOIN t_demo2 t2 ON t1.id != t2.id
) -- 3 批量更新订单表中的金额
-- 订单表
CREATE TABLE A(
aid VARCHAR(10) COMMENT '主键id',
c_time DATE COMMENT '时间',
total DOUBLE COMMENT '总金额'
);
-- 订单明细表
CREATE TABLE B(
aid VARCHAR(10) COMMENT '主键id',
amount DOUBLE COMMENT '货物金额',
comments VARCHAR(20) COMMENT '购买说明'
); INSERT INTO A VALUES('D01', '2018-01-01', NULL);
INSERT INTO A VALUES('D02', '2018-01-02', NULL); INSERT INTO B VALUES('D01', 100, '手机充值');
INSERT INTO B VALUES('D01', 4, 'Q币充值');
INSERT INTO B VALUES('D02', 90, '买迪卡侬'); -- 答案
UPDATE A SET A.total = (SELECT SUM(B.`amount`) FROM B WHERE A.aid = B.aid) SELECT * FROM A SELECT * FROM B UPDATE A SET total = NULL WHERE a.aid = 'D01' -- 4用一句sql 统计01月份 12月份及全年的订单总金额
CREATE TABLE C(
id INT COMMENT '主键id' ,
c_time DATE COMMENT '时间',
amount DOUBLE COMMENT '订单金额',
comments VARCHAR(40) COMMENT '备注'
); INSERT INTO C VALUES(1, '2018-01-01 01:30:00', 300, '衣服'); INSERT INTO C VALUES(2, '2018-01-01 01:30:00', 300, '衣服'); INSERT INTO C VALUES(3, '2018-12-01 01:30:00', 300, '衣服'); INSERT INTO C VALUES(4, '2018-12-01 01:30:00', 300, '衣服'); INSERT INTO C VALUES(5, '2017-12-01 01:30:00', 300, '衣服'); SELECT DATE_FORMAT(c_time,'%Y-%m') FROM c -- 答案
SELECT DATE_FORMAT(c_time,'%Y%m') AS ct,SUM(amount) FROM c WHERE YEAR(c_time) = '2018' GROUP BY ct,amount
UNION
SELECT DATE_FORMAT(c_time,'%Y') AS ct,SUM(amount) FROM c WHERE YEAR(c_time)
其他
有一些面试官也会问我会不会前端,接触过的前端框架,毕竟是做java的并且我在小公司呆过,至少也会一些前端的,但是我确实只会用jquery,哈哈,很尴尬了,对了,有一个面试题: 一个空页面,如果让里面唯一的div垂直并居中,最近买了一本spring源码深度分析,感觉很难,花了几天的时间才把源码导入到eclipse,遇到了很多坑啊...为什么买呢?因为我觉得spring是核心啊,它的设计是真的叼,,所以买了,不知道能不能啃下来,加油吧~~