为什么互联网公司互相称呼同学,国企互相称呼为老师?
刚看到个贴子,聊的是为什么互联网公司喜欢互称“同学”,而国企里都叫“老师”。网友一句“因为同学会毕业”,真是笑中带刀。
互联网公司节奏快、更新快,讲究扁平和灵活,“同学”听着亲切,也方便项目组之间一视同仁。
反观国企叫“老师”,那是因为传帮带体系重,讲资历、讲经验。叫老师不仅是尊重前辈,也是在认同一种稳中求进的文化。
互联网追的是效率和创新,国企守的是传承和规矩。
说到底,称呼只是表象,背后反映的是组织的气质。毕业也好,传承也罢,重要的是在各自的路上,能学到真本事。【备注:文末可领最新资料】
算法题:复数乘法
昨晚十一点多,我在公司楼下啃着还凉着的煎饼,手机那头小李问:东哥,复数乘法到底咋写,别一本正经讲理论啊,代码要能跑。行,那就边吃边聊,可能有口误你们就当语音转文字哈。
复数长这样:a + b*i。两个复数 (a+bi) 和 (c+di) 相乘,其实…就是把它当多项式乘: (ac) + (ad)i + (bc)i + (bd)i²。因为 i² = -1,最后合并成:(ac - bd) + (ad + bc)i。就这个式子,背住基本无敌。嗯对,没坑…哦也有,等下说。
我懒得引库,用一个小类把解析、运算、打印包起来。字符串格式我就按「a+bi」或「a-bi」,前后空格随意,整数。别整花里胡哨的 i 在前在后的哈。
publicclassComplexMulDemo{
publicstaticvoidmain(String[] args){
Complex x = Complex.parse(" -3 + 2i ");
Complex y = Complex.parse("4-5i");
Complex z = x.mul(y);
System.out.println(z); // 结果:(-2 + 23i)
// 快速验证:(-3+2i)*(4-5i) = (-12+15) + (-20-? 等等) 不算了,程序跑出的可信点
}
// 迷你复数
staticclassComplex{
finallong re; // 用 long 抗一点溢出
finallong im;
Complex(long re, long im) { this.re = re; this.im = im; }
static Complex parse(String s){
String t = s.trim().replace(" ", "");
// 期望形如: [-]?digits (+|-) digits i
// 把最后一个 'i' 去掉,再在中间找 '+' 或 '-' 的分界(但要跳过首位的符号)
if (!t.endsWith("i")) thrownew IllegalArgumentException("格式不对:" + s);
String core = t.substring(0, t.length() - 1);
int split = -1;
for (int i = 1; i < core.length(); i++) {
char c = core.charAt(i);
if (c == '+' || c == '-') { split = i; break; }
}
if (split == -1) thrownew IllegalArgumentException("找不到实部和虚部的分隔符:" + s);
long a = Long.parseLong(core.substring(0, split));
long b = Long.parseLong(core.substring(split)); // 自带符号
returnnew Complex(a, b);
}
Complex mul(Complex o){
long re2 = this.re * o.re - this.im * o.im; // ac - bd
long im2 = this.re * o.im + this.im * o.re; // ad + bc
returnnew Complex(re2, im2);
}
@Overridepublic String toString(){
String sign = im >= 0 ? " + " : " - ";
long absIm = Math.abs(im);
return"(" + re + sign + absIm + "i)";
}
}
}
就是那个…边界啊,三个常见的: 一是溢出,你们用 int 乘一乘很快炸,所以我上面偷懒换了 long。再极端就 BigInteger,但那就啰嗦了。 二是解析别被符号骗了,比如 -3-2i,中间那个 - 才是分隔符,首位的 - 不是。上面代码从索引 1 开始找,能规避。 三是格式尽量统一 a+bi,有人写 i 在前、或者省略系数 i 前写空(比如 +i),那就得加特判了…我现在真困,先不加。
有时题目直接给四个整数 a,b,c,d,那更简单,函数一行就回家:
staticlong[] mul(int a,int b,int c,int d){
returnnewlong[]{ (long)a*c - (long)b*d, (long)a*d + (long)b*c }; // {实部, 虚部}
}
好,差不多了。等会儿我去给煎饼加个辣条…哦对,单元测试你们记得补两组负号交错的样例,特别是 -1+0i 跟 0-1i 的组合,容易眼睛一花看错,先这样吧我上楼了。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html