因为长相猥琐被公司挂了。。。
刚刷到一个贴子,说有个哥们面试技术啥都没问题,学历也过关,项目经验也有,但因为长相不够“帅气”,怀疑被挂了,甚至还听说 HR 给另一个长得像明星的小伙多争取了 2k 薪资 。
我觉得这事吧,作为程序员真的挺无语的。技术岗位按理应该看能力,看你能不能把代码写好,系统能不能跑稳,和你长啥样有啥关系?可现实就是,面试不光是技术考核,也是综合印象管理。人就是容易被外貌加成影响,哪怕 HR 嘴上说看能力,心里也可能有偏好。
网友们有人说“这是歧视”,也有人觉得“长相也是职场竞争力”。我半认同吧,但换个角度想,咱们能掌控的永远是技能。外貌可能给你加分,但绝对撑不起长期的职业发展。
说到底还是一句话:别纠结外在那些不公平,把精力砸在技术和项目价值上 。只要硬实力够硬,最后总能遇到真正识货的团队。【备注:文末可领最新资料】
面试题:查询后的偶数和
昨天晚上十一点多,我在客厅找遥控器,结果被手机上的讨论区@了,说“东哥,那个‘查询后的偶数和’咋写,别一遍遍重算啊”。我当时就乐了,这题要是每次查询都把数组全扫一遍,那可真是熬夜套餐。
给你一个整数数组 nums,还有一堆操作 queries,每个操作是 [val, idx],意思是把 nums[idx] 加上 val。每做完一次操作,都要把“此时数组里所有偶数的和”记下来。最后把这些和返回。就这么点事儿。
很多人第一反应是:每次操作后扫一遍数组,把偶数加起来。能做,但每次 O(n),做 q 次就是 O(nq),数据一大,风扇起飞。
核心就一句:**维护一个实时的偶数和 even_sum**。开始先把数组里是偶数的都加起来存好。之后每一条查询只动一个位置 idx,那我们只需要处理这个位置“从偶到奇”或“从奇到偶”的变化。
具体操作像这样:
看旧值 old = nums[idx],如果它是偶数,那它本来就贡献在even_sum里;准备更新之前,先把它减掉。算新值 newv = old + val,如果新值是偶数,那它应该加入even_sum。把 nums[idx]改成newv,把此刻的even_sum记到答案里。
每条查询都是 O(1),整题 O(n + q)。这就叫少做无用功,对吧。
from typing import List
defsumEvenAfterQueries(nums: List[int], queries: List[List[int]]) -> List[int]:
# 先把初始偶数和算好
even_sum = sum(x for x in nums if x % 2 == 0)
ans = []
for val, idx in queries:
old = nums[idx]
if old % 2 == 0: # 旧值是偶数,先把它的贡献撤销
even_sum -= old
newv = old + val # 更新后的新值
nums[idx] = newv
if newv % 2 == 0: # 新值是偶数,加入新的贡献
even_sum += newv
ans.append(even_sum) # 记录这一步的答案
return ans
# 小测一下
if __name__ == "__main__":
nums = [1,2,3,4]
queries = [[1,0],[ -3,1],[ -4,0],[2,3]]
print(sumEvenAfterQueries(nums, queries)) # 期望:[8,6,2,4]
有同学会问:负数、零行不行?都行,判断偶数看 x % 2 == 0 就完事儿;零是偶数,记得算进去。还有一种小坑:别在“还没减旧值就先加新值”,顺序错了会短暂把一个位置算两次。最后复杂度方面,一次预处理 O(n),每条查询 O(1),空间用的也是常数,数据再大也能稳住。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领