...

个人近期面试复盘

近期面试-各大厂几乎面了一遍,有些不只面了一个部门。
一般的面试流程都是

graph LR A(投递) -->|面试邀约|B(1轮技术面) B --> C(2轮技术面) C --> D(3轮领导面) D --> |HR沟通|E(HR定薪) E --> |Offer审批|F(Offer发放) F --> |背调|G(入职)

简历转化率较高,而面试转化率较低,在这里做一个简单复盘。

数据统计

从一定角度上来说,求职是一场个人营销。在能力(简历转化率、面试转化率)既定的情况下,求职是一道可以倒推的数学题

graph LR A(曝光) -->|简历打开率| B(投递) B --> |有效投递率|C(有效投递) C -->|简历转化率| D(面试) D -->|面试转化率| E(Offer)

7.28-8.20投递及转化统计

进度 数量 转化 转化率
沟通数 572
投递数 209 沟通回复率 36.54%
面试邀约 43 面试邀约率 20.57%
1面数 36 面试接受率 83.72%
2面数 16 1面通过率 44.44%
3面数 8 2面通过率 50.00%
4面数 3 3面通过率 62.50%
offer数 5 4面通过率 75.00%
  • 综合简历转化率:17.22%
  • 综合面试转化率:13.89%

面试邀约率低原因复盘:

  1. 海投和盲目投递带来的业务匹配度低
  2. 大公司阿里、快手,简历已在流程中,导致大量投递无效

改进目标:> 30%

1面2面通过率较低原因复盘:

  1. 基本的SQL查询、分组统计,Linux分组统计没有复习准备
  2. 掌握的算法题目还不够丰富
  3. 性能测试、MySQL索引、Redis、Nginx负载均衡等未好好复习,原理理解不透彻
  4. 面试排期较满,面试发挥千篇一律,没有仔细查看各个机会所需能力(业务还是服务端还是侧开),导致评定业务不匹配
  5. 讲话语气和态度还有有待改进

改进目标:> 60 %

面试排期

近期面试排期表如下:

日期 星期 面试单位 轮次 面试时间 备注
8月27日 周五 字节跳动 1面 15:00 未通过
8月25日 周三 腾讯云-长安链 3面(HR) 15:00 Offer,T9
领创 1面 18:00 放弃
8月24日 周二 腾讯音乐(深圳) 1面 16:00 放弃
高瓴DVC 4面 14:00 Offer,L2架构师,Offer 放弃
腾讯云-长安链 2面 20:00 通过
8月23日 周一 百度IDG-指挥交通 1面 15:00 放弃
理想汽车 1面 18:00 HR变卦、从P7降到P6(无职位)
高德 1面 20:00 未通过
8月20日 周五 京东零售-居家 4面-总监面 18:00 通过,T7,后续5面面试官近期没时间,流程被HR直接关闭(京东HR好傲慢呀)
8月19日 周四 京东零售-居家 3面-交叉总监面 11:00 通过
8月18日 周三 瓜子二手车 1面 11:00 放弃
美团-充电宝业务 HR谈薪资 14:00 Offer,L7,QA岗,评价技术能力与测试开发岗不匹配(达不到),Offer推迟入职后放弃
陌陌 1面 14:30 个人放弃
百度IDG-自动驾驶 1面 15:00 反馈业务不匹配,转其他组重新1面
中国通信 2面(现场) 17:00 放弃
字节跳动-数据中台 3面 17:30 未通过,跟现在团队的匹配度不是很高
8月17日 周二 SphereEx 1面(现场) 15:00 放弃
字节跳动-数据中台 2面 16:00 通过
天眼查-测试开发 2面 18:00 因大小周原因放弃
去哪儿网 1面 19:00 面试官迟到,放弃
8月16日 周一 天眼查-测试开发 1面 11:00 通过
美团-充电宝业务 HR沟通 13:30 通过
欢忻网络 1面 14:00 不匹配,需要的还是功能测试为主
高领DVC 3面 15:00 通过
阿里文娱-优酷 1面 16:00 未通过-面试回答太分散
字节跳动-数据中台 1面 17:00 通过
京东零售-居家 2面-HR沟通 18:00 通过
腾讯-区块链业务 1面 19:00 通过
8月13日 周五 便利蜂 1面 10:30 技术深度不够,整体评估不符合预期
网易有道 2面 14:00 未通过
转转 1面 15:00 个人放弃
知乎 1面 18:00 未通过
销售易CRM 3面(HR定薪) 18:00 Offer,P8,测试开发Leader,Offer放弃
8月12日 周四 高领DVC 1面 10:00 通过
龙湖-龙珠优选 1面 10:00 放弃
美团-充电宝业务 4面 11:00 通过
分贝通 1面(现场) 15:30 放弃
探探 3面 18:00 后续反馈找到了更合适人选
高领DVC 2面 19:00 通过
8月11日 周三 云粒智慧 笔试 10:00 放弃
巴比特 1面 10:00 通过,后续面试个人放弃
人民科技-测试经理 1面 11:00 个人感觉为,性能测试经验有短板,管理经验缺失
网易有道 1面 14:00 通过
京东国际 2面 18:00 未通过-提问了一些负面问题
销售易CRM 2面 17:00 通过
京东零售-居家 2面 19:00 朋友内推,通过
百度 1面 20:00 未通过
8月10日 周二 Paytm 2面 11:00 对方爽约,需要有游戏经验
美团-充电宝业务 3面 15:00 通过
Keep 1面 16:00 未通过
探探 2面 18:00 通过
8月9日 周一 自如 2面+3面(现场) 11:00 反馈找到了更合适的
滴滴-Rlab 4面-BP 15:00 Offer,D6+ ,服务端测试,放弃Offer
8月6日 周五 美团-充电宝业务 2面 11:00 通过
龙湖 2面 15:30 未通过
京东国际 1面 17:00 通过
滴滴-Rlab 3面 19:00 通过
8月5日 周四 探探 1面 11:00 通过
销售易CRM 1面 14:00 通过
小米 1面 17:00 未参加
京东科技 3面 17:30 后续反馈待定,个人猜测技术栈匹配度不高或薪资问题
新氧 1面 19:00 职位不太匹配,个人放弃
8月4日 周三 京东科技 2面 10:30 转工具方向
美团-充电宝业务 1面 11:00 通过
爱奇艺 1面 14:00 未通过
龙湖 1面 16:30 通过
Moka(杭州) 1面 15:30 通过-后续面试放弃
有赞(杭州) 1面 19:30 通过-后续面试放弃
8月3日 周二 中国通信 1面(现场) 11:00 通过
自如 1面(现场) 15:00 通过
滴滴-Rlab 2面 19:30 通过
MetaApp 20:30 个人放弃
8月2日 周一 58同城 1面 17:00 未找到会议室-个人放弃
8月2日 周一 国美电器 2面 18:40 后续反馈薪资给不到预期
7月30日 周五 滴滴-Rlab 1面 16:00 通过
7月29日 周四 京东科技 1面 17:00 通过
7月28日 周三 国美电器 1面 17:30 通过

流程复盘

滴滴Rlab

服务端高级测试开发工程师 23-35k 15薪

职位描述:

  1. 负责服务端项目的质量保障工作,确保项目高质量上线。
  2. 参与产品需求和技术架构设计评审,评估整体技术架构合理性以及可测性,给出合理建议。
  3. 运用测试相关流程、策略、方法和工具等,提升测试质量和效率。
  4. 沉淀通用测试的解决方案,主导关键技术的专项建设。
  5. 测试领域前瞻性探索,推进整个测试团队技术进步。

任职要求:

  1. 工科、计算机相关专业本科以上学历, 3 年以上软件测试开发、自动化测试或白盒测试工作经验。
  2. 熟悉软件开发、测试理论和流程。
  3. 熟练java/go/python/php等至少一种编程语言;
  4. 熟悉软件测试的常用技术手段如:mock测试、代码diff等;
  5. 具备广泛的技术视野和很好的技术前瞻性,对测试行业发展有自己的思考及总结;
  6. 很强的学习能力、分析能力和问题闭环推动能力;
  7. 在某一测试领域如性能、自动化测试、环境治理等具备很强的专业技能者优先。

面试流程

graph LR S(07-28 内推)-->|2d|A(07-30 1面 技术) A-->|4d|B(08-03 2面 技术) B-->|3d|C(08-06 3面 领导) C-->|3d|D(08-09 4面 BP) D-->|1d|E(08-10 HR谈薪) E-->|2d|F(08-12 HR定级定薪) F-->|4d|G(08-16 发放offer)

共18days

美团充电宝

充电宝高级测试工程师 30-60k 15薪
岗位职责:

  1. 按照产品架构和业务要求,制定和推进测试策略和测试方法;
  2. 参与产品需求和设计评审,在理解产品设计的基础上确保产品具有可测试性;
  3. 通过在软件开发流程、测试策略、测试方法和测试工具等方面的创新,提升产品质量和工程效率;
  4. 构建CI环境,将功能测试、接口测试和压力测试等集成到CI环境中;
  5. 引入持续交付,通过测试可视化等技术手段增加团队发布信心;
  6. 解决日常工作中的复杂技术问题;
  7. 负责测试团队的技术培训,引领团队测试技术的进步。

岗位基本要求:

  1. 计算机或相关专业本科以上学历;
  2. 五年以上测试工作经验,熟悉软件开发和测试流程;
  3. 对持续集成和持续交付有深入理解并且具有实战应用经验;
  4. 精通Python或Java编程语言;
  5. 具备广泛的技术视野和很强的技术前瞻性,了解测试技术的发展;
  6. 极强的学习能力和解决问题能力。

具备以下优先:

  1. 自动化框架开发
  2. 提效工具或者是平台的开发
  3. CI/CD推动落地的经验

岗位亮点:
充电宝是美团的新业务,同时也是核心项目,能够提供成长空间。

面试流程

graph LR S(07-28 Boss投递)-->|6d|A(08-04 1面 技术) A-->|2d|B(08-06 2面 技术) B-->|4d|C(08-10 3面 领导) C-->|2d|D(08-12 4面 BP) D-->|4d|E(08-16 HR谈薪) E-->|2d|F(08-18 HR定级定薪) F-->|2d|G(08-20 发放offer)

共22days

题目复盘

面试内容中,必考的是测试经验、数据库、Shell、编程等。
业务岗会有用例设计,偏自动化的会问很多框架中的稳定性及维护成本等方面的内容,MySQL和Redis相关问题也问的比较多。
复盘:由于砍柴(面试)前没有好好磨刀(刷题),导致面试还是有很多问题一下答不上来,以及算法不能顺利写出。后续还是需要进行刻意训练。

  • 最常见的SQL问题为: 基本数据库查询、分组查询+聚合判断、左连接
  • 最常见的Linux问题为:大型日志,grep过滤,sort + uniq -c + sort nr分组统计,和分组后使用awk求平均数
  • 遇到的Python编程有:分组统计、列表相关操作

网易有道

  • 【编程】有序列表合并
给出一个整数数组 和有序的整数数组 ,请将数组 合并到数组 中,变成一个有序的升序数组
注意:
1.可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和 ,的数组空间大小为 + 
2.不要返回合并的数组,返回是空的,将数组 的数据合并到里面就好了
3.数组在[0,m-1]的范围也是有序的
例1:
A: [4,5,6,0,0,0],m=3
B: [1,2,3],n=3
合并过后A为:
A: [1,2,3,4,5,6]
  • 【编程】大型日志文件指定时间短按接口+异常归类统计
log分析。 给你一份10w行的log文件,内容如下 :
20180118 10:00:31 hello world 
20180118 10:00:32 Exception:Null Pointer 
20180118 10:01:01 something normal 
20180118 10:02:15 Exception: invalid parameter 
...
请按小时打印出exception的种类和数量,如: 
20180118 10 Exception:Null Pointer 6 
20180118 10 Exception:  invalid parameter 10

字节跳动

  • 【SQL】有student表 有字段,id,name;score表,有字段 id, course, score;数学科目分数大于80分的学生的名字?

  • 【编程】二维递增矩阵查找

给定二维m * n矩阵matrix,满足一定特性: 1. 每行从左到右递增 2. 每列从上到下递增 给定目标元素num,判断num是否在矩阵中存在 
例如: 
matrix = [ 
[1, 3, 5, 10], 
[2, 4, 6, 11], 
[7, 9, 12, 20], 
] 
num = 4存在;num = 13不存在 

这个题时在字节一面面试官的逐步提示下做出来的。这是一道图路径求解的过程。
类似于二分查找,对应一维有序数组,我们可以通过一次判断,来确定一个明确的方向(小于部分还是大于部分)。
而在矩阵中,一般一个节点有上下左右4个路径(排除斜线相邻点),每个节点有向左(减少)、向右(增加),向上(减少),向下(增加)四种方向。
我们需要找到只有两个方向,并且两个方向分别是增加和减少的节点作为初始节点。
矩阵的4个顶角满足只有两个方向,左上角定点两个方向(向右、向下)都是增大,右下角定点两个方向(向上、向左)都是减小,不符合要求。
因此,可以选择右上和左下任意一个定点作为起始点开始判断,模板值大于该点,则向下,小于该点则向左,直到找到目标点或超出矩阵范围。

参考实现:


def matrix_find(matrix, m, n, num):
    y = 0
    x = m - 1
    while y < n and x>=0:
        print(x, y, matrix[y][x])
        if matrix[x][y] == num:
            return True
        if matrix[x][y] > num:
            y -= 1
        elif matrix[x][y] < num:
            x += 1
    return False

matrix = [
[1, 3, 5, 10],
[2, 4, 6, 11],
[7, 9, 12, 20],
]
print(matrix_find(matrix, 4, 3, 4))
  • 【编程】数字转大写数字
将一个整数转成相应的中文,输入的数字不超过8位 
0 零 
1 一 
1234 一千二百三十四
  • 【编程】给定一个正整数n,任意调整位数顺序,找吃比n大且离它最近的数
    比如 1234 输出1243

美团

  • 【SQL】有score表,格式如下,求平均分 > 60的人的姓名
name chinese math english
张三 100 100 100
李四 80 70 60
李四 50 50 50

平均分大于60相当于3课加起来成绩>180即可。
参考答案

SELECT name FROM score WHERE chinese + math + english > 180;

爱奇艺

  • 【编程】二叉树前序遍历(迭代方式)
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 
# @param root TreeNode类 
# @return int整型一维数组
#
class Solution:
    def preorderTraversal(self , root ):

思路:在迭代外使用一个列表模拟队列,While循环,不断弹出节点并追加其左右子节点,直到列表为空。

  • 【编程】单链表反转
    思路:遍历链表,使用tmp缓存上一个节点,将每个节点的next指向上一个节点,首个节点指向None,时间复杂度O(N)。
    当时答题时使用了数组型的列表或者栈来实现,时间复杂度一样,但是空间复杂度较高。

  • 【SQL+编程】学生成绩文件分组统计

百度

  • 【编程】8进制转10进制
    思路:Python中可以使用bin()、oct()、hex()方法将10进制转2进制、8进制、16进制。也可以使用int()方法将2进制、8进制、16进制转为10进制。
    进制转化方法1:采用除8取余法。
    例:将十进制数115转化为八进制数
    8| 115…… 3
    8| 14 …… 6
    8| 1 …… 1
    然后得到163

参考实现:

def int2oct(num: int)->str:
    m_list = []
    cur_num = num
    d = cur_num // 8
    m_list.append(str(cur_num % 8))
    while d != 0:
        cur_num = d
        d = cur_num // 8
        m_list.append(str(cur_num % 8))
    num_oct = ''.join(m_list[::-1])
    return num_oct

print(int2oct(20))
  • 【编程】有序列表合并求中位数
  • 【SQL】数据库tb表,字段为name, class, score,查询平均分大于60分的班级

京东科技

  • 【编程】根据屏幕截图及布局xml元素bounds进行元素图片截取
    1.解析test.xml文件,输出所有class="android.widget.ImageView"的node节点。
    2.每个节点代表test.png中的一个图片元素。每个node节点会包含一个坐标bounds值,如:bounds="[96,793][240,937]",
    代表这个元素在图片中的位置。要求根据这个bounds值,
    从test.png图片文件中截取指定区域图片,并保存,文件名为bounds四个数字,如96793240937.png。

思路:使用lxml结合xpath获取元素节点,并通过节点对象的attrib来获取bounds属性
使用pillow库Image对象的crop方法对指定坐标区域进行截图保存。

参考实现:

import os
from lxml import etree  # pip install lxml
from PIL import Image   # pip install pillow
def parse_xml_and_crop_img(xml_file, img_file, output_dir='.'):
    root = etree.parse(xml_file).getroot()
    img = Image.open(img_file)
    img_node_list = root.xpath('//*[@class="android.widget.ImageView"]')
    for node in img_node_list:
        bounds_str = node.attrib['bounds']  # '[0,0][1080,2282]'
        _bounds = bounds_str[1:-1].replace('][', ',').split(',')  # list
        bounds = [int(i) for i in _bounds]  # item to num
        print(bounds)
        cropped_img_file = os.path.join(output_dir, f"{''.join(_bounds)}.png")
        img.crop(bounds).save(cropped_img_file)
if __name__ == '__main__':
    parse_xml_and_crop_img('D:\\test.xml', 'D:\\test.png')
  • 【编码】CSV文件解析
    CSV文件格式标准:
      1.开头是不留空,以行为单位。
      2.可含或不含列名,含列名则居文件第一行。
      3.一行数据不跨行,无空行。
      4.以半角逗号(即,)作分隔符,列为空也要表达其存在。
      5.列内容如存在半角逗号(即,)则用半角引号(即',')将该字段值包含起来。
      6.列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
      7.内码格式不限,可为 ASCII、Unicode 或者其他。
      8.不支持特殊字符。
    要求:
      写一个方法,输入为一个csv的文件,输出为解析后的真实的文本。
      例如,
        输入:你好,",","""xxx""",:,""",aaa
        输出:你好 , "xxx" : " aaa

  • 4层负载均衡和7层负载均衡的逻辑
    4层如LVS基于IP+端口的负载均衡,在传输层对指定TCP/UDP流量进行NAT和分配转发。
    4层负载均衡复杂度低,性能高(吞吐量大),不需要理解应用层协议。
    7层负载均衡,如Nginx, 应用层根据虚拟URL或者主机IP,对HTTP请求进行分配转发。
    7层负载均衡,业务负载均衡逻辑更加灵活,可以应对一些安全问题,如SYN Flood DDos等工具。较耗费CPU。
    haproxy可以做4层也可以做7层

  • Nginx负载均衡有哪些策略

    • 轮询(默认策略),平均分配,自动剔除故障系统。
    • 加权轮询(Weight),根据服务器性能加权分配
    • ip_hash,按哈希表分配,ip访问固定的服务器
    • 扩展fair: 根据页面大小和加载时间长短智能地进行负载均衡
    • 扩展url_hash: url走固定的后端服务器。
  • vue页面生命周期
    大致可以分为创建-》挂载-》销毁 3个环节
    详细步骤为:
    创建Vue对象-》开始监听数据-》初始化事件-》处理元素参数和模板参数-》编译模板-》
    挂载页面(实时监控数据并更新)-》

  • 高可用原理

  • MySQL索引如何支持百万级搜索?基于什么结构?B+树,二叉树,红黑树有什么区别?

  • NIO和AIO底层逻辑有什么不同?

  • 框架设计目标?

  • 关键字框架及缺点?

  • 你熟悉那种测试框架?

  • 如果让你自己实现一个关键字框架怎么设计?

  • RPC接口有那些优点?

  • 你了解哪些序列化协议?

腾讯

  • 【编程】合并重叠区间
给出一个区间的集合,合并所有重叠的区间
输入:[[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间[1,3]和[2,6]重叠,将他们合并为[1,6]

参考实现(待优化)

def merge(arr):
    if not arr:
        return arr
    result = []
    min,max = arr[0][0], arr[0][1]
    for start, end in a[1:]:
        if end <= min:
            continue
        if start >= max:
            result.append([min, max])
            min, max = start, end
        elif end > max:
            max = end
            result.append([min, max])
        return result

知乎

  • 【SQL】数据库tb表,id,name,age,查询 相同年龄,人数最多的age

    参考答案
SELECT age, count(age) as num from tb GROUP BY age ORDER BY num desc limit 1;
  • 【编程】括号闭合判断
    思路:这是一道经典的栈道使用题目,遇到左括号{、[、(则入栈,遇到右括号则和栈顶对比,匹配则弹出,不匹配则返回False。

Moka

  • 【SQL】数据库student表,包含name,course,score 3个字段,查询所有成绩大于80的学生
name course score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

全部判断一般需要使用反向判断实现,先找到存在成绩<=0的学生姓名并去重。
然后使用NOT IN,查询不在这个集合内的学生

参考答案

SELECT DISTINCT name FROM tb4 WHERE name NOT IN (SELECT DISTINCT name FROM tb4 WHERE score <= 80);
  • 【编程】列表偶数元素转*
输入一个字符串如a1v23333de,将偶数位替换为`*`

自如

  • 【编程】3数之和

职业规划复盘

缺少一线大厂背景
缺少管理经验
缺少落地的经验

大厂技术体系一览表

更多参考:https://www.zhihu.com/question/424489896/answer/2072139461
等级对比参考:https://baijiahao.baidu.com/s?id=1687557018539230402&wfr=spider&for=pc

posted @ 2021-08-18 17:26  韩志超  阅读(1485)  评论(1编辑  收藏  举报