|
基本信息面试流程 网申/笔试通过 → 一面通知 → 参加视频面试 → 自我介绍 → 手撕代码 → 基础知识问答 → 项目深挖 → 反问环节 → 退场。 面试问题及参考回答一、手撕代码(必考)
1. LeetCode 206 链表反转。 参考回答:迭代法,时间复杂度O(n),空间复杂度O(1)。
2. LeetCode 53 最大子数组和。 参考回答:动态规划,dp = max(nums, dp[i-1] + nums)。
3. 字符串中的最长无重复子串。 参考回答:滑动窗口+哈希表,时间复杂度O(n)。
二、计算机网络
4. TCP三次握手的过程是怎样的? 参考回答: 第一次握手:客户端发送SYN包到服务器 第二次握手:服务器回复SYN+ACK包 第三次握手:客户端发送ACK包确认
5. HTTP和HTTPS的区别是什么? 参考回答:HTTPS在HTTP基础上加入SSL/TLS加密层,数据传输更安全,需要CA证书。
6. 从输入URL到页面加载完成的过程? 参考回答:DNS解析→TCP连接→发送HTTP请求→服务器处理→返回响应→浏览器渲染。
三、操作系统
7. 进程和线程的区别是什么? 参考回答:进程是资源分配的最小单位,线程是CPU调度的最小单位。一个进程可以包含多个线程。
8. 什么是死锁?如何避免? 参考回答:死锁的四个必要条件:互斥、持有并等待、不可剥夺、循环等待。避免方法:按顺序申请资源、使用超时机制。
四、Java基础(Java岗位)
9. HashMap的底层实现原理? 参考回答:底层采用数组+链表+红黑树结构。默认初始容量16,负载因子0.75。链表长度>8且数组长度>64时,链表转红黑树。
10. ArrayList和LinkedList的区别? 参考回答:ArrayList基于动态数组,随机访问快;LinkedList基于双向链表,中间插入删除快。
|