|
基本信息面试流程 网申/笔试通过 → 一面通知 → 参加视频面试 → 自我介绍 → 手撕代码 → 基础知识问答 → 项目深挖 → 反问环节 → 退场。 面试问题及参考回答一、手撕代码(必考)1. LeetCode 3 最长无重复子串(滑动窗口)。 参考回答:使用滑动窗口+哈希表,时间复杂度O(n),空间复杂度O(min(n, m))。
2. LeetCode 146 LRU缓存(哈希表+双向链表)。 参考回答:使用哈希表+双向链表,get和put操作时间复杂度O(1)。
3. LeetCode 206 链表反转。 参考回答:迭代法或递归法,迭代法时间复杂度O(n),空间复杂度O(1)。 二、计算机网络4. TCP三次握手的过程是怎样的? 参考回答: 第一次握手:客户端发送SYN包到服务器,进入SYN_SENT状态 第二次握手:服务器回复SYN+ACK包,进入SYN_RCVD状态 第三次握手:客户端发送ACK包确认,双方进入ESTABLISHED状态
目的是同步序列号,确认双方收发能力正常。
5. HTTP和HTTPS的区别是什么? 参考回答: 三、操作系统6. 进程和线程的区别是什么? 参考回答:
7. 什么是死锁?如何避免? 参考回答:死锁是指两个或多个进程互相等待对方释放资源,导致都无法继续执行。死锁的四个必要条件:互斥、持有并等待、不可剥夺、循环等待。避免死锁的方法:破坏四个必要条件之一,如按顺序申请资源、使用超时机制等。 四、Java基础(Java岗位)8. HashMap的底层实现原理? 参考回答:HashMap底层采用数组+链表+红黑树结构。默认初始容量16,负载因子0.75。当链表长度大于8且数组长度大于64时,链表转红黑树,查询复杂度从O(n)降为O(log n)。数组长度是2的n次幂,方便位运算计算哈希桶位置。
9. 什么是线程池?线程池的核心参数有哪些? 参考回答:线程池是管理线程的工具,避免频繁创建销毁线程。核心参数包括: corePoolSize:核心线程数 maximumPoolSize:最大线程数 keepAliveTime:空闲线程存活时间 workQueue:阻塞队列 threadFactory:线程工厂 handler:拒绝策略
|