看到hr发的面试不通过的原因,够离谱。。
刚看到个贴子,说有个HR把候选人面试不通过的理由发出来,说“长得不够清秀”“给人感觉比较憨厚木讷”,说实话有点离谱🤦♂️。
这事,说穿了就是拿“感觉”当筛选标准,既不专业也不公平。面试看气质是可以,但你要有明确标准,不能因为主观印象就否定别人能力。
而且,HR这么发出来,甚至配图调侃,属实没底线。
网友有的觉得“样貌歧视本来就存在”,也有说“这HR情商堪忧”,我更认同后者,连最基本的尊重都没有,还做什么招聘?
不过话说回来,职场有时真的是看脸、看气质,但做人别太露骨。选人是HR的权利,但别忘了,尊重是基本素养。【备注:文末可领最新资料】
算法题:查询员工的累计薪水
这个题其实挺有意思的,典型的 SQL 聚合问题,如果你有点 Java 的 ORM 基础,那写起来也不复杂,但要是直接上算法,就要注意几个细节了。我们来聊聊怎么用 Java 搞定“查询员工的累计薪水”这个问题。
首先得明白题目的意思:你有一堆薪资记录,比如张三某个月拿了一笔工资,李四某个月又拿了一笔,给你这么一堆数据,让你把每个人的总工资算出来。简单说就是“按人分组,累加薪水”。
想想就像你领导年终总结的时候拍着Excel说:“来来来,给我把全体员工全年工资汇总一下,看谁工资高该裁谁”😂。
那Java里怎么搞?我个人是更喜欢直接用流式API撸一把,干净又利落,来,咱上代码:
import java.util.*;
import java.util.stream.Collectors;
publicclassEmployeeSalaryAggregator{
staticclassEmployeeSalary{
String name;
int salary;
EmployeeSalary(String name, int salary) {
this.name = name;
this.salary = salary;
}
}
publicstaticvoidmain(String[] args){
List<EmployeeSalary> records = Arrays.asList(
new EmployeeSalary("张三", 5000),
new EmployeeSalary("李四", 7000),
new EmployeeSalary("张三", 4500),
new EmployeeSalary("王五", 6000),
new EmployeeSalary("李四", 8000)
);
Map<String, Integer> salarySum = records.stream()
.collect(Collectors.groupingBy(
r -> r.name,
Collectors.summingInt(r -> r.salary)
));
salarySum.forEach((name, total) ->
System.out.println(name + " 累计薪水为: " + total + " 元")
);
}
}
这个写法一眼看去就像是数据库里写个 SELECT name, SUM(salary) FROM emp GROUP BY name 一样,Java 的 stream API 这块用的挺爽的,尤其是 Collectors.groupingBy + summingInt 这套组合拳,堪称Java聚合利器🔥。
当然,现实情况一般不会这么简洁——比如薪资表跟员工表是分开的,可能你还得连个ID,再做map,那就得小心一点。还有一种常见的场景,是要处理时间维度,比如只统计最近一年的薪水,那就要加个时间判断过滤进去,比如 .filter(e -> e.date.isAfter(LocalDate.now().minusYears(1))) 之类的。
你别看这个问题好像简单,但我面试时真遇到过候选人上来就 for + for 循环嵌套写累加,搞得像是回到JDK 1.2 时代……兄弟们,这年头流式编程不熟练,简历都发不出去😭。
讲真,我个人觉得这种问题最能看出候选人对 Java 标准库熟不熟,写得优雅不优雅,全靠底子功。你是不是还在手撸 map check?那你就out了。
最后说一句,别小看这种“加和”问题,变形一下,考你按月分组、按部门聚合、算累计趋势,全是这套路的变种。所以能写出一句话stream,还读起来像SQL一样清晰的代码,才是真牛逼💪。
好啦,今天这题就到这,大家赶紧去看看自己的代码风格,是不是还有点写 C 的影子在里面……
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html