经历了几个月的面试准备,因为好久没找工作了,前期走了不少弯路,到后期知识点查漏补缺后发现其实每家公司来回面试的都是类似的东西,此时准备工作说明比较充分了,以下分享这次找工作经历的一些经验总结,希望能帮助到尚在迷茫的你。
JAVA:
注:因为我的技术栈是java,比较熟悉java,如果你的技术栈是python,学习路径类似
1、HashMap、HashTable、Concurrentmap的区别(非常高频)
2、LinkedList、ArrayList的区别(非常高频)
3、面向对象的思想是什么
4、多线程、线程池
5、bean实例的装载过程
6、多态和loc控制反转反射(较为高频)
7、Integer和int区别
8、StringBuffer和StringBuilder区别
9、equals和==的区别
10、悲观锁、乐观锁
文章参考:JAVA 面试题
REDIS:
1. 雪崩、穿透、测试注意事项
2. key值类型:String、List、Hash、Set、Sorted Set
DUBBO:
1、架构组成
2、测试事项
MQ:
- 组成架构
- 测试事项,如何保证有序性、幂等性
性能测试:
- JVM回收机制
- 监控指标有哪些,历史测试过的项目TPS、响应时间、最好把jmeter的压测结果每项的含义记住
mysql:
1. 索引有多少种
2. 常规的调优方式有哪些
- 使用连接(JOIN)来代替子查询(Sub-Queries)
- 使用联合(UNION)来代替手动创建的临时表
- 使用枚举或整数代替字符串类型
- 使用TIMESTAMP代替datetime
- 避免使用NULL字段
- 连续数值条件,用BETWEEN不用IN
- select * from t ,用具体的字段列表代替“*”
- NOT IN和or会让索引失效
- LIKE %_ 开头会让索引失效
3. 事务隔离机制
读未提交RN、读已提交RC、可重复度RR、序列化
Nginx:
- 配置文件由哪些内容组成,如何打到对应后端服务上
- 常用命令
网络:
1、HTTP状态码:
1**:信息状态码
2**:表示成功,一般常用200,表示访问成功
3**:资源重定向,304表示资源直接取本地缓存,
4**:客户端错误,一般404,页面未找到,400语法错误,403服务端禁止请求
5**:服务端错误,一般500,后台接口错误,502已经与后端建立了连接,但超时;504与后端连接未建立,超时
2、TCP三次握手
TCP位于传输层
三次握手:发送方发送带有SYN=a标志的数据表给接收方-》接收方发送SYN/ACK(seq=b
,ack=a+1)的数据包传递确认消息,表示已收到-》发送方再次发送ACK(seq=a+1,ack=b+1)的确认消息给接收方,表示握手结束
四次分手:client发送FIN给server,通知关闭数据传送,client进入FIN_WAIT状态-》server发送ACK,进入close_wait状态-》server发送FIN,通过关闭server与client的数据传送,并进入LAST_ACK状态-》client发送FIN报文,并进入TIME_WAIT状态,server收到报文后进入CLOSED状态
3、HTTP和HTTPS区别:
1)HTTP为超文本传输协议,HTTPS为加密超文本传输协议,HTTPS是使用TLS/SSL加密的HTTP协议
2)HTTPS协议需要申请ca证书
3)连接方式不同,端口不一,http端口为80,https端口为443
4、TCP和UDP区别:
1)TCP/IP结构分为四层,链路层(以太网协议)、网络层(TP协议)、传输层(TCP/UDP)、应用层(HTTP)
2)TCP面向连接、UDP不建立连接
3)TCP为可靠传输、UDP不可靠传输,不保证消息一定能收发到
4)TCP面向字节流、UDP面向报文
5)TCP连接对象为一对一,UDP可多对多
linux:
1、统计词频,leetcode上的几题最好都联系下
算法:
以下几道题面试的时候遇到过,算法的思想主要有:二分查找、快速幂、分治、贪心、动态规划,最好先搞清楚方法,再按照标签每种思想选择几道做即可
1、有效的括号
2、最长子字符串
3、验证回文
4、反转链表
5、判断链表是否有环
6、排序:冒泡、选择排序、快排、归并这几种得搞清楚
软素质:
- 画出项目架构图
- 架构设计需要有哪些注意点:幂等、有序性、容错、断点续传
- 如何测试秒杀项目:防超卖、熔断、降级 https://www.jianshu.com/p/cda7c0366089
- 如何判断一个项目是否可上线
(这个问题面试官问的目的其实就是考察你的测试流程:项目分为大项目和小项目,小项目流程简单一些在这就不讲了,大的项目的话分为:
技术设计阶段:
技术架构设计有无明显缺陷,是否做到了幂等、有序、容错
提测前:
测试准入
1.1 冒烟测试:研发做冒烟测试并提供冒烟报告(如果测试发现冒烟不通过,项目将要打回)
1.2 代码扫描:sonar扫描,有无严重问题
1.3 接口自动化
测试中:
1. 测试用例的提前审核和测试用例执行
2. bug的收敛趋势
3. 代码覆盖率、接口自动化
4、验收测试
5、上线步骤及准备工作执行情况