掌上先机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的位置,以此类推),第二趟循环如果发现下标和里面的数字对不上号的就是缺失的数字。

面试官给的评价是理论还行,缺乏实践,面试型选手,明天下午二面。

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