|
基本信息面试流程 网申/笔试通过 → 一面通知 → 参加视频面试 → 自我介绍 → 手撕代码 → 基础知识问答 → 项目深挖 → 反问环节 → 退场。 面试问题及参考回答一、手撕代码(必考)1. 数组里面的奇偶数,交换位置使得奇数在前面,偶数在后面(双指针)。 参考回答:使用双指针法,左指针找偶数,右指针找奇数,交换位置,时间复杂度O(n),空间复杂度O(1)。
2. 将一段英文字母中的大写字母转成小写,不能用内置函数。 参考回答:通过ASCII码转换,大写字母A-Z对应65-90,小写字母a-z对应97-122,所以大写转小写只需加32。
3. 从一段文字中提取手机号。 参考回答:使用正则表达式匹配手机号规则(1开头,第二位3-9,共11位数字)。 二、计算机网络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. ArrayList和LinkedList的区别? 参考回答:ArrayList基于动态数组,随机访问快;LinkedList基于双向链表,中间插入删除快。ArrayList适合频繁查询的场景,LinkedList适合频繁增删的场景。
|