- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
在上一篇笔者的工作感悟【一】笔者讲到了一些个人经历,帮助大家从思维上学生转换到社会人士,在思维成功转换以后,接下来我们就要学会干活,除了一些比较恶劣的职场环境,大部分职场都是把活干好了才能拿到报酬,因此这里笔者想给大家分享一些拙见,帮助大家能够把活干好 。
这个问题相信是很多同学都一定会问的,甚至很多同学会说,我看到有些同学即便不刷算法题,也能拿到高薪的工作,那么我是不是不刷算法题我也能在职场中混得还行?
笔者的回答是必须刷,笔者在这里不想从比较功利的角度讨论,大厂面试算法占了多少比重,我们回归到工作的本质来说.
。
想必大家都知道,计算机是一个傻瓜,没有独立思考能力,我们说前进他不会后退,我们说往东他不会往西,那不知道大家有没有想过,我们作为开发,我们在拿什么指挥它工作, 。
另外想必也会有感触,我们把自己写好的代码讲给一个门外汉听的时候,我们会发现,即便我们不和他们讲任何专业知识,他们也一样听不懂我们在说什么 。
。
事实上,这看似毫无关联的两件事,其实正好是人和计算机交互的正反两面 。
前一个是人走向计算机,我们要把我们的想法传输给计算机,让它工作 。
后一个是计算机走向人,我们要把计算机的工作内容还原成人能理解的想法 。
。
而连接这两个主体的是什么, 就是算法 。
。
我们来回顾一下算法的基本概念 。
算法是一系列解决问题或执行任务的步骤,它描述了在给定输入后,通过一系列有限步骤来产生所需输出的过程。算法在计算机科学和数学中被广泛应用.
算法的特点如下:
明确定义:算法必须具有明确的输入和输出,以及一系列明确定义的操作步骤.
可执行性:算法必须是可执行的,即可以实际运行并产生结果.
有限性:算法必须在有限的时间内运行结束.
输入:算法可以接受一个或多个输入.
输出:算法可以产生一个或多个输出.
确定性:每个步骤都必须具有唯一确定的含义,不会产生二义性.
结构化:算法可以由基本操作和控制结构(如顺序结构、分支结构和循环结构)组成,形成一个结构化的整体.
有效性:算法应该有效利用计算机资源,如时间和空间.
可读性:算法应该易于理解和阅读.
通过设计高效和优化的算法,可以提高问题的解决效率,减少计算资源的使用,满足实际应用的需求.
。
同学们再回想一下平时做算法题的时候,是不是三个阶段 。
。
我给大家举一个例子:经典背包问题 。
问题描述 。
给定一组具有重量和价值的物品,和一个限制总重量的背包。要求在不超过背包总重量的前提下,选择一些物品放入背包,使得放入背包的物品总价值最大化.
算法步骤 。
代码实现 。
public class KnapsackProblem {
public static int knapsack(int[] weights, int[] values, int capacity) {
int n = weights.length;
int[][] dp = new int[n+1][capacity+1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= capacity; j++) {
if (weights[i-1] <= j) {
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-weights[i-1]] + values[i-1]);
} else {
dp[i][j] = dp[i-1][j];
}
}
}
return dp[n][capacity];
}
public static void main(String[] args) {
int[] weights = {1, 2, 3};
int[] values = {6, 10, 12};
int capacity = 5;
int max = knapsack(weights, values, capacity);
System.out.println("Maximum value that can be obtained: " + max);
}
}
。
结论:算法之所以被称为内功心法,指的是一个人能在计算机思维和自然人思维中熟练地来回切换,因此算法很重要 。
之所以大家现在整天想着学什么好就业,是人心浮躁的后果,这个时代大家都喜欢挣快钱,但是笔者提醒大家,来得快的东西往往去的也快,很多中了头奖的家庭,往往最后的结局并不会多圆满 。
笔者认为,除非你现在学的是就业面特别狭窄的技术或者特别老旧的技术,例如VB语言,Pascal语言啥的,笔者现在见到的确实是不多 。
一般情况下没有必要换,你有几十张一块钱,也抵不过别人一张一百块 。
那么有同学会问,万一我学的技术若干年后过时了怎么办,笔者认为也不用担心 。
学到深处很多东西是相通的,像C++,Java都是面向对象编程,要过渡过去是不需要完全从头开始的 。
结论:除非现在学的就业面特别窄或者过时了,否则没有必要特地去换或者追求新技术 。
说实话,笔者自己也才工作了一年,加上笔者技术一般,也没有分到啥特别高端技术的项目,那么笔者的建议是什么,就是尝试着从程序员走向软件工程师,笔者之前在博客中强调,要有工程化思维,很多同学软件工程这门课可能背的很熟,也是少有的能够在笔试中轻松通过的考试,毕竟没有敲代码 。
但是同学们扪心自问一下,在工作中真正用到这门课知识的部分有多少,同学有没有尝试过用工程化的思维来工作,例如你参与一个项目只是拿到需求就开始敲,还是纵观整个项目做一份开发报告,做测试有没有自己写过测试报告,后续和其他岗位的交接有没有记录 。
笔者最深刻的印象就是我那些同事开项目会议的时候,都是进了会议室打开execl或者word临时写一个会议记录,而不是带着进度报告来讨论哪里有问题,那怎么可能做得出名堂来,典型的头痛医头,脚痛医脚 。
工作中用不到软件工程,那怎么能叫软件工程师呢 。
。
程序员和软件工程师在职责和工作范围上存在一些区别。以下是它们的区别:
职责:
角色:
技能要求:
工作范围:
。
很多同学沉溺于技术,当然不是说技术不重要,技术很重要,笔者也同样喜欢研究技术,但是编程往往在这个工程中只占一小部分,要当工程师还有很长一段路要走呢,整天CURD那只能证明终究还是程序员,那么可替代性当然就很强,可不就得35岁就请你走人换精力更旺盛的应届生嘛 。
结论:尝试着用工程化的思维工作 。
笔者也经常在网上看到某某几步法,有些还吹得特别玄幻,背后经过美国XX专家研究,帮助多少人从一事无成到XX大咖,这些东西笔者以前参加工作前都尝试过,基本没啥用 。
这还是我之前提到的人心浮躁的问题,比较明显的是很多同学沉迷于挣快钱,有些同学看似没有想着挣快钱,希望通过自己的努力来获取成果,这比前一种同学在思维上前进了一步,但是很多同学其实并没有真正下功夫去啃书本,钻研项目,很多同学学习盲目求快,幻想着一夜之间从学渣变成学霸,结果给自己制造焦虑,然后必然会去寻找怎么样学习快,怎么样学习高效,事实上在笔者看来,从你搜索开始,你就已经注定不可能学好了,因为你心乱了,这还是人心浮躁,只不过是一种比较隐蔽的人心浮躁罢了 。
学习本质事实上是个很单纯的东西,把某样东西反复重复,从不认识到认识,从认识到理解,理解到记住,记住到本能,如此而已.
所谓的高效办法,那也只是基于你自己领悟以后总结出来的所谓的方法,不能一棒子打死所谓的学习方法都没有用,但是你情绪浮躁,学也只是形似神不似,那只会邯郸学步,让你原本会的东西都忘了 。
如果硬要笔者介绍学习方法,那么笔者给大家推荐一个 。
例如我现在要学习:例如我现在要学习谭浩强的C语言程序设计,很多同学可能学习的时候力求把书上的东西还原出来,但事实上你要真有这本事有限的时间内一字不落地把书上的内容记下来,你现在就能当我的老师了,同学们要记住,书是人写的,书上的所有知识体系都是基于写书人的语言体系,但是人和人是不一样的,有时候两个人的生理结构命中注定相克,他的语言体系并不适合于你,那么你想学号这本书该怎么办呢,用你自己的语言把书上的内容还原出来,这也是笔者之前在学习感悟里强调过的要建立自己的知识体系 。
这个时候就回到了那句老掉牙的话,适合自己的才是最好的 。
。
结论:大道至简,追求那些花拳绣腿往往会变得不堪一击,要更注重实在 。
那么今天呢就先和大家聊到这里,笔者由于只工作了一年,加上笔者前半年由于经历了数年的动荡,渴望安定,基本上都处于一个半摆烂的状态,所以能给大家分享的工作经验也有限,笔者接下来会更加努力的工作,给大家带来更多的经验分享,希望同学们工作顺利,早日升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,想想是不是还有点小激动呢 。
最后此篇关于【笔者感悟】笔者的工作感悟【二】的文章就讲到这里了,如果你想了解更多关于【笔者感悟】笔者的工作感悟【二】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!