程序员老鬼

大厂哥来我们小破公司,,觉得我们得技术都太low了~

刚看到个贴子,说有大厂被裁的哥们跳槽到小公司,嫌小公司的技术太low,流程也不规范,挺有共鸣的。

Image

网友们有的说大厂哥太傲,有的说小公司确实差距大。我的看法是,这其实是“性价比”问题。大厂是能学到东西,但你要按大厂那套来改小公司的代码,分分钟资源不够人也不够,还容易被嫌事多。小厂讲究一个能用就行,造火箭没用,能飞就行😅。

从我的角度看,大厂思路值得学,但别一来就觉得自己啥都对。团队协作和现状兼容最重要。大厂哥要是能带点新东西过来优化,大家一起进步最好,但别指望完全照搬。总的来说还是多点理解,多点沟通,技术低也有低的活法,合力解决问题才是正道。【备注:文末可领最新资料】

算法题:苹果和橘子的个数

哎你们说,这天儿最近越来越热,昨天晚上我下班还特地拎了点水果回家,懒得切,直接数了下袋子里苹果几个橘子几个,顺手就跟我小侄子玩了个小游戏,问他“要是我有10个苹果和6个橘子,一共多少水果啊?如果我吃掉了3个苹果和2个橘子呢,还剩几个?”小孩数学还没学明白,口算老半天没算对。后来我就想,这种题,其实就是最基础那种“分类求和、减法”问题,你们面试也容易碰到。

像这种“苹果和橘子的个数”算法,其实本质特别简单,你说用Java写吧,随手来一个最常见的写法就行。你们脑子里别想着什么特别复杂的模型,真的不用,正常日常开发很多需求比这个还简单。

我那天在厨房烧水,手机还响,一边跟人微信聊工作,说到这题直接就顺嘴用Java写了个方法,大概这样:

publicclassFruitCounter{
publicstaticvoidmain(String[] args){
int apples = 10;
int oranges = 6;
        System.out.println("总共水果:" + totalFruits(apples, oranges));
        eatFruits(apples, oranges, 3, 2);
    }

// 求总数
publicstaticinttotalFruits(int apples, int oranges){
return apples + oranges;
    }

// 吃掉一部分后的剩余情况
publicstaticvoideatFruits(int apples, int oranges, int eatApples, int eatOranges){
int leftApples = apples - eatApples;
int leftOranges = oranges - eatOranges;
if(leftApples < 0) leftApples = 0;
if(leftOranges < 0) leftOranges = 0;
        System.out.println("还剩苹果:" + leftApples + ",橘子:" + leftOranges);
    }
}

你看这玩意没啥花里胡哨的,就是简单的加减法,我都懒得用数组啥的,变量写清楚就行。其实有的同学喜欢把这题往复杂了整,比如用数组存每种水果、循环处理啥的,但面试官要的就是你思路清楚,逻辑对得上。

然后有同学就喜欢问,要是水果种类变多呢?哎,我前阵子公司楼下抽烟的时候小王还问过类似的问题。我说这就用个Map嘛,key是水果名,value是数量,随便加种类都没问题。代码大概这样:

import java.util.HashMap;
import java.util.Map;

publicclassFruitCounter{
publicstaticvoidmain(String[] args){
        Map<String, Integer> fruitMap = new HashMap<>();
        fruitMap.put("apple", 10);
        fruitMap.put("orange", 6);
        fruitMap.put("banana", 3);

int total = 0;
for(Integer count : fruitMap.values()) {
            total += count;
        }
        System.out.println("总共水果:" + total);

// 假设吃掉部分
        eatFruits(fruitMap, "apple", 3);
        eatFruits(fruitMap, "orange", 2);
        System.out.println("吃完后:" + fruitMap);
    }

publicstaticvoideatFruits(Map<String, Integer> fruitMap, String fruit, int eatCount){
int left = fruitMap.getOrDefault(fruit, 0) - eatCount;
if(left < 0) left = 0;
        fruitMap.put(fruit, left);
    }
}

你看我就随手写,结果一目了然,想怎么扩展都随便。其实说穿了,这题没有什么特别的“算法”,你要硬说算法,那就是小学数学里的分类加法减法。碰到要扩展的,把“水果”看成一组key-value,Map一用,一切都顺溜。

说到这里,突然想到昨晚煮水太久水壶差点烧干...回来继续说哈,这种“苹果和橘子个数”类型的题目,有时候考的其实是你变量的定义、代码的健壮性,比如吃掉的比原来还多,这就要考虑边界,不能让数量负数对吧。这种细节面试官喜欢问,日常写代码也容易踩坑。

还有啊,这种简单场景,用Java写其实和用Python、C++啥的也没啥大区别,思路都一样。就是一顿生活碎嘴+手到擒来的小代码,千万别上来一套理论讲一堆,场面都尴尬。

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404