字节跳动实习一面
你平时有用虚拟机吗?
- 你平时有用List吗,AttaryList和LinkedList他们的区别是什么?
- synchronized关键字平时有用到吗?平时有并发处理吗,简单说一下java
synchronized
这个关键字。 - java jvm是怎么实现synchronized的? 怎么实现关键字,怎么实现锁的?
- 什么是事务?
- 事务的特性?分别进行解释。
- synchronized修饰代码块是一个事务吗?
- 我在执行两个synchronized修饰的代码块,进行更新和添加等操作,我执行了十次,突然断电了,那我之前的操作是否执行了?
- jvm的GC都了解过什么?
- GC的垃圾回收算法有哪些,能分别展开说一下吗?
- 这些垃圾回收算法分别在堆的哪些代里进行,为什么这个代里要使用这样的GC算法?
- 描述一下在浏览器上输入网址,他会经历一个什么样的过程,把请求送到服务端这里处理?
- 得到服务器的ip后,发生了什么?描述下中间的过程?
- 你写过http编程吗?你会socket编程吗?
- https的流程,它是怎么交互的?
- 为什么它的加密要设计成非对称加密和对称加密?
- 非对称加密和对称加密的特性,为什么对称加密传输效率低?
- 再说下事务的几个特性:
- 原子性是怎么实现的?mysql是怎么实现的?怎么实现回滚的?
- 你有了解数据库的索引吗?索引的作用是什么?它是怎么帮助快速查找的?
- 索引底层用的什么,底层原理是什么?
- 散列表能支持范围查询吗?我想创建一个时间表,我想查询今天到明天的数据,我怎么用散列表做范围查询? 怎么快速查询
算法题: 剑指offer:请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
当时想出了三种想法:
- 暴力法,把二维数组遍历,找
- 把二维数组存到一个一维数组里,二分法查找
- 寻找数组每一行的第一个元素和最后一个元素,确认整数是不是在这行里。之后用二分法在该行里查找这个数。
但当时就下意识感觉第三种思路对,所以两种被扼杀在思想摇篮里了。现在想想应该,每有一个想法就跟面试官说一下。
然后最后,二分法忘了怎么写了。感觉回想再写起来太耗时间,也快到午饭时间了,想着就遍历下结束吧,就没写二分。
总结
- 继续提高自己的题量
- 把mysql相关知识精通下
- 再把jvm知识深入学习下
- 再深入下锁的学习
总体感受:还是面试太少了,很多节奏把握的都不到位,有一些该回答的都没打上。