掌上先機Java開發面經

直接微信上面的,很直接,沒有自我介紹,上來就告訴我base北京,兩輪技術面加一輪hr面,大概50min左右,感覺各方面都面的比較全,深度還行,不算特別深,但這公司比較注重實踐。
1、講一講tcp三次握手,爲啥要三次
2、瀏覽器輸入url,發生了啥
3、https和http區別,https的加密方式有了解嗎
4、字符串系列問題
—》4.1、String、StringBuffer、StringBuilder區別
—》4.2、String s = new String(“abc”)建立了幾個對象,這個過程幹了什麼事
—》4.2、String s = new String(“abc”)和String s = "abc"區別,是否相等
5、Integer系列問題
—》5.1、int a = 2;Integer a = 2是否相等,爲什麼
—》5.2、Integer a = 11和Integer b = 1是否相等,爲什麼
—》5.3、Integer實現原理,源碼有去看過嗎
6、併發系列
—》6.1、併發、並行概念
—》6.2、synchronize關鍵字底層原理是啥(以前記得學過,忘了。。。)
—》6.3、ThreadLocal原理,舉一個應用的例子
—》6.4、ThreadLical會發生什麼問題,內存泄漏咋解決
7、集合系列問題
—》7.1、Map map = new HashMap(10000);插入一萬個元素之後會不會擴容,擴容擴多少
—》7.2、爲什麼容量要是2的n次方
—》7.3、1.7和1.8底層原理
8、數據庫系列問題
建立表:

CREATE TABLE `people` (
`people_id` int(11) NOT NULL ,
`people_no` varchar(40) NOT NULL COMMENT '編號',
`fullname` varchar(40) NOT NULL DEFAULT '' COMMENT '姓名',
`gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0未知,1男,2女',
`age` smallint(2) NOT NULL DEFAULT '0' COMMENT '年齡',
`mobile_no` varchar(32) NOT NULL DEFAULT '' COMMENT '手機號',
`province` varchar(40) NOT NULL DEFAULT '' COMMENT '省份',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '備註'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';

CREATE TABLE `people_detail` (
`rec_id` int(11) NOT NULL ,
`people_id` int(11) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';

現在people表有1條數據 people_id = 1
people_detail表有3條數據 rec_id 和 people_id 分別是 1,1 2,1 3,1
表1的people_id和表2的people_id相對應
—》8.1、下面的四條語句會輸出什麼結果(基本上全答錯了。。。)

ELECT COUNT(1) FROM people a LEFT JOIN people_detail b ON b.people_id = a.people_id 
SELECT COUNT(1) FROM people_detail b LEFT JOIN people a ON a.people_id = b.people_id 
SELECT COUNT(1) FROM people a INNER JOIN people_detail b ON a.people_id = b.people_id;
SELECT COUNT(1) FROM people_detail b INNER JOIN people a ON a.people_id = b.people_id

—》8.2、下面這一條sql語句又會輸出什麼

SELECT COUNT(1) FROM people a LEFT JOIN people_detail b ON b.people_id = a.people_id 
group by b.rec_id

—》8.3、說一下聚簇索引
—》8.4、建立聯合索引 fullname,gender,age,用 gender查詢會不會走索引,爲什麼
—》8.5、知道數據庫的鎖嗎?for update用過沒,說一說for update
—》8.6、一個sql用for update鎖住age=50的時候,另外一個sql查詢age = 55的時候會不會阻塞
—》8.7、你說一下什麼這兩個表有什麼需要改進的(表2的people_id可以弄成外鍵,兩個表都應該有主鍵,編號、全名、手機號應該把varchar’改成定長的char’)
—》8.8、select * from people order by people_id desc limit 9000000,100這個查詢怎麼優化
—》8.9、索引爲啥b+樹用的多、而不是hash
9、算法題:
已知整型數組A[99],包含的所有99個元素都是從1-100中隨機取值,並且這99個數兩兩互不相等,也就是說從1到100這100個數字中有99個在數組內,有一個缺失。請設計一個算法將缺失的數字找出來。回答了四種,直接排序、先求和1-100再去減數組、異或、一趟循環把所有數字放到該放的位置(1放到數組下標爲1的位置,2放到數組下標爲2的位置,以此類推),第二趟循環如果發現下標和裏面的數字對不上號的就是缺失的數字。

面試官給的評價是理論還行,缺乏實踐,面試型選手,明天下午二面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章