2020腾讯暑期实习 后台开发岗 一面问题整理
记录人生第一次的面试,一场兵荒马乱的面试。
面试情况
2020腾讯暑期实习 成都 后台开发岗 一面凉经
计算机网络
1、TCP的流量控制(答得很差,等于没答上来)
操作系统
1、进程调度算法(没想起来) 2、进程通信(答了一部分,说的有点混乱,但是不懂面试官感觉如何。)
数据库
1、数据库 查询是如何执行的?(当时没懂问的是啥,直接说不太懂,后面想起来,用 Explain
命令可以分析mysql 复杂查询语句的执行过程,面试官应该问的是这个。) 2、三个范式的定义(说完了,但是不懂面试官感觉如何。) 3、Innodb与 Memchached 的比较(说完了,但是不懂面试官感觉如何。)
Python
1、List和Tuple的区别(没说上来) 2、copy 和 deepcopy 的区别是什么?(说完了,但是不懂面试官感觉如何。) 2、Python的垃圾回收机制(说完了,但是不懂面试官感觉如何。)
算法题
1、给定一个链表,其中存在着环,所谓环是指链表的结尾指向了链表中间的一个位置,要用最简单的方式找到链表的尾部的val
以及指向的那个中间节点的val
实际上,这是一道LeetCode原题。
是middle难度的题,142. 环形链表 II。
第一次面试,不太懂,问了半天,原来可以写伪代码。 我的方法,时间复杂度太大,面试官听了直接结束了面试。 (ó﹏ò。)
我的想法是遍历链表,将每个节点的值保存在一个 List
和一个 hash map
中,每次都判断,是否出现重复,如果重复已经出现,就说明找到了尾结点。但是这个方法时间复杂度至少在 \(O(n^2)\) 到 \(O(n^3)\) 之间。
还是太年轻了呀 (ó﹏ò。)
1 |
|
遇到链表,正确的做法是马上想到用指针, 先用两个指针,慢指针一次走一步,快指针一次走两步,它们若相遇一定在链表的循环中,然后另外一个指针从头开始走,慢指针也一步一步的走,若它们相遇,便是起始位置
1 |
|
这是面试结束之后整理的题解。
面试总结
- 计算机网络、操作系统、数据库的相关问题非常多,经过这次面试,我意识到,不仅要抓紧时间全部熟悉,也要抓紧时间反复练习如何把一个问题给面试官阐述清楚,这个也很重要。
- 算法题要经常练习,经常回顾总结,每年一道新题,复习几道做过的题目,形成固定思维,什么时候用指针、什么时候用回溯法、什么时候用动态规划,都要非常清楚才行。
- Python的一些基础特点,面试常问到的问题,一定要掌握,因为简历上的技术栈,只写了Python。
- 最后就是,早睡早起,每晚睡觉时间不得晚于11点,这次面试,太困了。
准备总结
面试的问题非常多,不可能把每一个问题的细节都记清楚,所以对于常考的部分问题,如进程调度和通信、死锁、页面置换算法、三次握手四次挥手。
其实面试(开发 or 算法)准备是一个很矛盾的过程,个体和整体之间本来就是存在关联关系的,不是独立存在的。
这些一个一个的知识点,如果只关注高频问题,那么对整体就不会有清晰完整的概念。但是,如果一味地、盲目地想搞懂每一个细节,又会让我们丢失重心,无法准确地把握关键。
最好的方案是: 1、对要复习的知识点整体有一个大概地认识,清楚总共有哪些知识点,其中哪些是重点知识点。 2、第一轮先广泛地涉猎,对每个知识点都有所了解,不求深度认知,但求有限认识且认识正确。 3、第二轮在第一轮的基础上,对重点知识点做全方位的了解。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!