关于360实习这件小事
狗头保命:我的个人情况比较特殊,不具备普适性,仅作参考。
个人情况
- 26届,双非本,计科,主要学习方向是 Java 后端开发,前端能看懂一些,写是写不了一点。
- 最最最重要的一点:我眼拙,投递的岗位是
25春-Android手机软件开发工程师。
时间线
- 3月22日:投递简历。
- 4月06日:笔试。
- 4月21日:预约一面时间。
- 4月24日:11:00一面。
- 4月24日:18:15预约二面时间。
- 4月29日:15:00二面。
- 4月30日:官网状态更新为HR面试排序中。
- 5月09日:预约HR面时间。
- 5月13日:HR面试。
- 5月16日:官网状态更新为Offer发放排序中。
- 6月13日:电话口头offer,预计16号(最晚17号)下offer,18号入职(实习岗,非秋招春招)。
一面面经
忘了录音了,没有当时自己的回答,下面是能回忆起来的一些问题。
- 进程和线程的区别
- 用户态和内核态的切换
- 网络协议
- http与https的区别
- https怎么加密的
- tcp和udp的区别
- udp怎么实现可靠传输
- 网络层和数据链路层的区别
- 各层协议报文的位置
- jvm内存模
- 每个部分对线程的拥有性
- 内存泄漏的情况
- B+树
- 算法: 第k大的数
- 快排和归并的区别
- 多线程同步
- 共享资源为什么出问题
二面面经
- 刚开始聊了几分钟非技术的东西。。。
-
Java的内存模型是什么样的? a. 主要是通过 JVM 进行管理,分类上来说可以分为堆、栈、方法区、寄存器和程序计数器。
-
什么叫内存模型?主要定义了什么东西 a. 内存模型给内存划分了不同的区域,不同区域保留我们自己定义的一些变量。
-
可见性有序性原子性是什么概念? a. 可见性是指:在多线程环境下,线程 A 对 共享变量 X 进行了修改后,线程 B 无法立马得知变量 X 被修改了。 b. 有序性是指:代码实际执行顺序和代码书写顺序完全相同。 c. 原子性是指:一些操作要么全部完成,要么全部不完成。 d. volatile 关键字可以保证可见性和有序性。被 volatile 修饰的变量,线程 A 对其进行修改后,线程 B 对该变量的修改是立马可见的。通过添加内存屏障的方式,保证了代码的实际执行顺序和代码书写顺序完全相同。
-
有没有什么具体场景?
a. 可见性:如果某个商品的库存只剩一个了,这时候有两个用户同时购买这个商品,必须要保证用户 A 购买商品后,商品库存的减少对用户 B 是立马可见的。 b. 有序性和原子性:A 给 B 进行银行转账,必须是 A 先扣款, B的余额才能增加。同时必须保证原子性,不能说 A 扣款了 ,但是 B 的余额没有增加。
-
用过单例模式嘛?单例里面有什么场景是和这个有关的?
a. 单例是要保存线程安全的,采取的方案是加双重检查锁。
-
单例模式为什么要加双重检查锁?
a. 双重检查锁是两个 if 中间加了一个锁,第一个 if 是为了提高效率,第二个 if 是为了保证单例,加锁是为了保证线程安全。
-
volatile 和 synchronized 在可见性的保障上,看过底层源码嘛?或者我换一种说法,为什么 volatile 不能替代锁? a. volatile 不具备原子性,只能实现有序性和原子性。
-
在可见性的保证机制上面呢? a. volatile 主要是通过加读写屏障实现的,锁是通过加锁解锁来实现串行化操作,保证同一时刻只有一个线程进行访问。
-
Java 中有哪些锁? a. synchronized 、 Lock、CAS 乐观锁。
-
用过 reentrantLock 嘛? a. 用过,它是一个可重入锁。
-
他和 synchronized 的主要差别在哪里? a. 主要差别在可重入性。 b. 可重入性是指:当一个线程已经持有这个锁时,在持有锁的期间能否再次请求这个锁?可重入性是可以再次请求的。 c. reentrantLock 具备可重入性,是可重入锁。
-
那 reentrantLock 的使用场景是什么? a. 公平锁和超时。
-
结合一个例子说一下。 a. 公平和不公平主要是说,获取锁的顺序和申请锁的顺序一不一样,有时候我们需要保证获取锁的顺序必须和申请的顺序是完全一致的。
-
是怎么实现可重入的?加锁是有加锁的次数的。 a. 有一个栈,加锁之后会往栈里面放一个,释放锁就会从栈里面弹出来一个。
-
有没有看到它的 AQS ? a. 挺多的锁的底层用的都是这个类,主要使用一个 volatile 修饰的一个状态字段属性,和 CAS 操作。
-
我看你还刷了不少题是吗? a. 之前是在力扣上做过一点点,主要是为了练习自己的算法能力,参加一些算法比赛。
-
刷题给你带来了什么好处? a. 对常见的数据结构及其常见的用法更加了解了。 b. 对思维逻辑的能力进行强化和锻炼。
-
有没有印象比较深的算法题。 a. 力扣第 62 题...... b. 动态规划和数学解题,一顿子编...
-
安卓这方面你了解多少? a. 安卓底层主要用的应该也是 Java 和 JS ,编程语言这块是相通的。 b. 安卓的四大组件是有所了解的。
-
对于陌生的领域,比如说安卓,学习路径你会怎么规划? a. 一顿子吹牛逼...
- 后面就是唠嗑了...
- 二面面试官说了会把我往 HR 面推,但是由于我当时眼拙投的是 25 届的春招,不是实习。。。
HR面面经
这个纯唠嗑,就没有记录自己的回答。
- 自我介绍。
- 是本科期间服兵役了嘛?
- 如果面试通过的话,可以长期实习嘛?
- 服兵役是自己的选择嘛?
- 为什么想去参加兵役呢?
- 在部队期间主要负责哪些工作?
- 计算机相关的知识,主要是自己自学的嘛?
- 你的简历上写的更偏后端一些,但是我们这个岗位是移动端,你自己的求职意向呢?
- 你现在才大三,正常来说应该不会参加校招的,怎么这么早就开始了?(我也不想参加校招啊。。。。但是我的眼神它不争气啊.......)
- 按照公司这边的要求,26届的校招offer可能发不了,实习岗位你可以接受吗?
- 反问 a. 大概多久出结果(答:两个工作日,最多三个工作日) b. 后续结果是:第三个工作日的时候,官网状态从HR面试中变成了Offer发放排序中,这一排就是一个月。
一些碎碎念
-
4月30号二面结束后,确定可以进到 HR 面,以为这家公司就稳了,5月上旬和中旬一直一直都没有投简历,就等着 360 给我下offer,但是一直等一直没等到。后面开始慌了,又开始投简历,但是面试机会已经少了很多了。
-
这家公司给我的感觉来说,整体效率还是很高的,浅浅评价一下
-
槽点:整个流程中根本联系不到公司的任何人。
-
夸:官网的状态写的很清楚,能知道自己当前正处在哪个阶段。
-
夸:面试结果反馈的很快,通过了之后立马就会约下一次面试。虽然没有公司的人进行对接,但是官网上给的待选时间多达十几个。
-
个人认为,我的 offer 发放拖了这么久,主要原因是我一个 26 届投了 25 届的岗位,所以可能会麻烦一些,应该不是公司效率的问题。而且有一个我朋友的朋友,走的 360 的前端岗,HR 面结束后一周内就下 offer 了。
-
在小红书上看,这家公司的内部氛围还是很好的,食堂零食健身房等福利也超级棒,狠狠期待住了。
-
唯一的问题就是,我投递的岗位是安卓手机软件开发,应该是用 kotlin 语言,不出意外的话是得转语言了,但是也还好,kotlin 底层封装的就是 Java。去公司之后会面临哪些困难和问题,暂时还不清楚,未来还未来,现在不去纠结和焦虑还没发生的事。相信自己,遇一关过一关就好。
-
可能很多事情不是我们自己能够完全决定的,做好自己能做的和该做的,顺其自然,问心无愧就好。
-
哎这就又想到学校的学习了,到底是自我感动,还是努力不够,还是运气太差,总是考不到想要的成绩。准备的比小伙伴更充分更认真时间更长,但是最后就是考不过,甚至考前一直问我题的朋友出成绩了都比我高。但是没事,我自认为已经是做了自己该做的,结果怎么样都能接受,再说了,又不会导致我拿不到奖学金。
-
愿从校园踏入职场,能保持现有的心态,坚信所有的付出都是会有回报的。
-
愿我们都能拥有自己的思想,过着属于自己的生活。
-
每个人都是从生来便开始走向死亡,从出生就注定死亡。谁又不想在这有限的时间里尽情折腾一番呢。
