畢業一年后的java面試總結


前言

     目前公司閑,沒有新產品開發,都是一些維護工作,於是我提出了離職,開始了面試之路,抱着一個面試就是學習的心態去面試的,當然了,也是希望能拿到大公司的offer,大概面試了一個月左右的時間!!!

    

    一共面試了8家,拿了3個offer,自己覺得不太滿意,因為沒有准備太充分,每次准備又不知道准備什么,想着先面試面了之后就知道如何准備了,其實這是很傷的,可能會錯失理想的公司,拿到的offer基本公司都不大,去了一家規模最大,薪資最高並且離我住的地方最近的一家公司,並且還是做"金融"的,算的上是"天時地利人和"吧,哈哈~~

  

 面試前的注意點

  1. 簡歷:  簡歷必須多動腦筋,盡量知識面多一點.
  2. 想清楚離職的原因,下一家想找什么樣子的公司. 根據自己的真實情況,可以海投,收到面試邀請一定要查一查在過去.
  3. 投簡歷: 我投簡歷的時候都是海投,因為自己學歷不太好,很容易被拒絕,所以投的多才能有更多的面試機會,某一些要求比較高的也可以投,因為,投簡歷不用花錢~~
  4. 准備工作: 其實我沒怎么准備~~之前看到一些jdk的源碼,說實話對這次面試還有所幫助的, 然后每面試完一家之后記錄下來,晚上找找答案, 會遇到重復的問題的,如果沒有遇到,當學習也是很不錯的
  5. 我的理解: 問問題就是這樣,由淺入深,從各種方面去問,比如: 問你集合的理解? list與set的區別? ArrayList與linkedList有啥區別? 能解釋一下ArrayList的add方法嗎? ,只是舉例表達出問題的由淺入深,所以面廣,知識點深,那么何愁offer沒有,哈哈.

  

  

 面試知識點

    1. 有一個字符串里面有中文和英文,如何切割時保證中文不被切割?(代碼實現)   
    2.  jdbc的加載步驟說一下(我也是蒙蔽了~~)
    3. statement與praredStatement的區別
    4. 創建線程的3種方式
    5. 線程池的原理
    6. 怎么手寫一個線程池
    7. spring boot的定時器時如何實現的
    8. spring boot的兩大特性
    9. 說一說訂單管理需要怎么樣去設計表
    10. spring mvc的工作流程
    11. hibernate與mybatis 的一些區別
    12. 聊一聊arrayList種的add方法
    13. md5加密的實現
    14. md5如何完成可逆的
    15. 介紹一下異常體系
    16. 說4種常見的運行時異常以及為什么會發生
    17. git與svn的區別
    18. git中分支提交到另一個分支出現沖突怎么解決
    19. sql題目也遇到了一些(這里就不描述了....)
    20. 說一說你工作中遇到的最大的問題?如何解決的
    21. 換工作的原因(幾乎每一家都有問到)
    22. 說一下你的優勢

    上面就是我面試的一些(印象比較深的)問題

    找了一下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是核心啊,它的設計是真的叼,,所以買了,不知道能不能啃下來,加油吧~~

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM