字节提前批 国际化电商 客户端 7.16 一面面经
7.12 15:00 官网投递
7.16 17:00 一面 时长50min
面试内容
自我介绍
基础:(不按顺序,因为记忆不太清晰了)
- 操作系统
- 线程,进程,两者区别
- 虚拟内存
- 分段式,分页式是什么?为什么提出分段式?
- 并发与并行的区别
- 计算机网络
- 浏览器网址输入到页面显示的流程?
- ARP如何工作?向谁广播?
- TCP的挥手为何是四次,握手为何是三次?TCP中SYN可以如何攻击(SYN flood,忘了...还有中间人攻击)
- Java
- HashMap结构,哈希碰撞怎么解决?除了链表还有别的解决方式吗?和HashTable及ConcurrentHashMap比较
- Java的几种引用方式,它们的区别。(我往垃圾回收上靠了,甚至现在都还不知道它们除了垃圾回收外的区别,而且垃圾回收的区别记得也很模糊)
- Android
- Activity拉起将运行在新进程的Activity的过程
- Jetpack了解吗?
- 操作系统
算法:
Leetcode 219 - 查找重复的数 II, 难度:简单
(没刷过,一开始想的两层map嵌套记录遍历过的所有信息,双O(n)的解法。面试官说不要嵌套呢?我自己也知道嵌套有点扯,这题应该很简单不至于嵌套。但可能由于紧张,脑袋完全沉不下来思考。)
正解:一层HashSet用于遍历时记录过去的k个数,容量达到k后,通过nums[i-k]删除set中最久远的数。复杂度:时间O(n),空间O(min(n, k))
反问:
对我的面试评价(基础知识部分概念不清晰,且大部分停留在“是什么”,没掌握底层原理)
总结
秋招季第一次面试,虽然多半凉了,但也希望能从中吸取经验教训。首先显然复习/学习的还不够,如面试官所说,很多知识点停留在表面,不甚了解内里,甚至还有压根说不出一二的部分。这有部分原因是我只有短暂的复习,许多知识点我只看了一些高度概括的文章。充分的复习最起码应该广听多家之言,深浅文章都应看看,也帮助自己建立不同深度的知识陈述能力。而过去没接触过的知识点要落到实处,从初学者角度把它消灭掉,再深入探索并巩固。
其次是很关键一点,在复习/学习知识点时,应当同时练习陈述它们的思路,条件允许的话复习时也要动嘴,讲出来。我发现面试时问到的知识点许多都在我脑中有抽象的图示或概念团(大概来自那些“XXX面试题大全”,“XXXX,这一篇就够”,它们作者懂了,但我不完全懂),但我并没有能力把它们迅速清晰地陈述出来,及其原因,一是对知识点本身的不充分了解,二是缺乏直接的描述练习。前者如上一点所说,还需努力学习;后者就需要复习时动起嘴来,讲讲才知道。
最后是保持冷静,相信自己算法刷题的成果,在面试中遇到新题时沉下心来分析思考。
(就在编写面经时,收到了邀请评价面试的短信-_-!! 正式秋招再会了 喔评价面试不是结束的意思,但我还是觉得凉了)