随着第一次考核的落幕我也是成功的意识到了自己的不足,基础知识点的薄弱,知识点之间链接不够熟练,也是考的可以说是一塌糊涂
我想对于我这周的学习做一个总结,首先没考好是有原因的,回顾这一周我的学习状态并不好,在小组学习时也经常会胡思乱想,思考自己到底应该走那一条路,思考自己到底适合不适合走着一条路,这些顾虑一直在我脑中盘旋,让我寸步难行.
但是我在网上刷到的一句话点醒了我,焦虑是世界上最没用的东西,它不仅没办法帮助自己提高学习效率,还会危害身心健康,降低注意力.而可以延缓焦虑的最好的方法就是落实到具体的某一件事,把自己的身心都投入到一件事上去,只有真正去行动了,才不会胡思乱想,否则只会永远浮于表面.
虽然这此考核我发挥不理想,但是我并不会气馁,反而我为我找到缓解焦虑的方法并且找到自己的不足而高兴
比如基础知识点像标识符的构成原则这样看起来并不起眼的小知识点,但如果不注意就会出错
选择题:唯一没塌的地方,也是唯一的舒适区
30 分拿了 24,两段都是 80%。这部分确实是我准备得最充分的。
有一道题值得单独说说:
Stringa="hello";Stringb="hello";Stringc=newString("hello");System.out.println(a==c);System.out.println(a.equals(c));System.out.println(a==b);标准答案给的是 C(true true false),但正确的是B(false true true):
a == c→false。new出来的对象在堆里,a指向常量池,地址不同。a.equals(c)→true。String重写了equals,比的是内容。a == b→true。两个字面量都指向常量池里同一份"hello"。
我选了 B,被扣了分,后来对着答案想明白:这道题我其实做对了,是答案错了。
但这件事给我的提醒比得分更重要——背结论不如记机制。如果我记的是"字符串常量池 + new 一定在堆上"这条机制,任何变换题都能推;如果我只是背了"== 比地址、equals 比内容",遇到常量池这种细节就会翻车。
三、填空题:看着送分,其实在考"你写过没有"
10 分只拿 5 分。丢的地方特别典型:
① JDK / JRE / JVM 的包含关系——背过,考场上想不起来哪个套哪个。
② 编译运行命令
javac Test.java → Test.class → java Test注意最后一步是java Test,不带.class后缀。这个点我写过无数次,考试时反而写错了。
③ 冒泡排序改错题
原代码里if (arr[j] < arr[j + 1])是降序,题目要求从小到大,应该改成>。还有内层循环的边界j < arr.length - 1在最外层循环里没有跟着收缩。
这类题最能暴露一个问题:我"知道"冒泡排序怎么写,但没真正逐行读过自己的代码。平时都是抄一遍能跑就过,从没盯着i和j的边界推一遍。
四、简答题:0 分的那两道,我确实答不出来
简答 4-5 题(&vs&&、静态方法 vs 实例方法)我拿了0 分。
不是没写,是写了但答不到点上。回头看我当时的答案,全是这种句式:
“
&&有短路,&没有。”
一句话没错,但只有一句话。而 4 分的题,出题人要的是:
| 对比项 | & | && |
|---|---|---|
| 运算类型 | 位运算符,也可用于 boolean | 逻辑运算符 |
| 是否短路 | 否,两边都算 | 是,左边能定结果就不算右边 |
| 适用场景 | 位运算、需要两边都执行时 | 条件判断,防 NPE 常用 |
问题不在于我不知道,而在于我不知道"要答多少"**。
简答 1-3(equals vs ==、static、抽象类 vs 接口)拿了 3/12,也是同一个毛病——每条只写了半句,没展开成对比结构。
教训:简答题按"定义 + 区别 + 使用场景"三段式写,能拿的分远多于写一句结论。阅卷老师找的是关键词,不是我懂不懂。
五、程序设计:真正的问题在这儿
四道题 40 分拿了 7 分。这是最该复盘的部分。
第 1 题:完全数(2/10)
求 1000 以内所有完全数。满分答案就是一个双重循环:
for(inti=1;i<1000;i++){intsum=0;for(intj=1;j<i;j++){if(i%j==0)sum+=j;}if(sum==i)System.out.println(i);}我卡在哪?没有想到"因子"要用取余来枚举。看完答案才发现,这就是最朴素的双重循环,没有任何技巧。
第 2 题:猴子吃桃(2/10)
初始给猴子 y 个桃子,x 个桃核换 1 个桃子,问一共能吃多少个。
这题我错得最有价值。我当时是这么想的:
先吃掉 y 个 → 得到 y 个核 → y / x 个新桃子 → 吃完又得核……想到了第一步,但没想到"换来的桃子吃完还能再换"这件事会一直持续下去,所以写成了一个一次性公式,而不是循环。
正确答案的核心是一个while:
inttotal=0;intpits=0;intpeaches=y;while(peaches>0){total+=peaches;pits+=peaches;peaches=pits/x;pits=pits%x;// 换完剩下的核留着继续攒}坑在于:"能换"是一个反复发生的状态变化,必须用循环模拟,不能一次性算出结果。
第 3 题:回文串(2/10)
判断abcba这类字符串。思路谁都懂——首尾对比往中间走。
booleanflag=true;for(inti=0;i<s.length()/2;i++){if(s.charAt(i)!=s.charAt(s.length()-1-i)){flag=false;break;}}我扣分在边界写错:i < s.length() / 2写成了i <= s.length() / 2,奇数长度时中间那个字符自己跟自己比,虽然结果碰巧不差,但flag的复位和break位置也乱。
回文题最典型的错误不是思路,是下标。
length() - 1 - i里的-1漏掉一次就全错。
第 4 题:装备系统(1/10)—— 最惨的一道
要求写一个抽象类Equipment,两个子类Weapon/Armor,还要静态计数器、toString、equals。
我交上去的代码根本编译不过。翻出来看,错得五花八门:
| 错误 | 报错信息 |
|---|---|
类没写abstract却有抽象方法 | 非法的类型开始 |
抽象方法加了static | 抽象方法不能是静态的 |
setter 有返回值public void setPrice(...)写成了public int | 不兼容的类型 |
return getIsEquipped;(返回方法本身) | 找不到符号 |
set IsEquipped(...)(方法名中间有空格) | 需要 ‘(’ |
setprice小写 p | 找不到符号 |
这些全是语法层面的低级错误,说明我平时写代码就是"能跑就行",从来没认真读过类的基本结构。
而这道题真正考的其实是:
publicabstractclassEquipment{privateStringequipmentName;privateintprice;privatebooleanisEquipped;publicabstractvoidequip();publicabstractvoidunequip();publicabstractvoidshowInfo();// getter / setter ...}抽象类的意义、静态变量和实例变量的区别、多态怎么落到@Override上**——这些我都能背,但一行都写不出来。
六、附加题:汉诺塔,直接空白
20 分,0 分。不是不会写,是根本没写到。
汉诺塔的核心三行:
voidhanoi(intn,charfrom,charto,charvia){if(n==1){System.out.println(from+" -> "+to);return;}hanoi(n-1,from,via,to);System.out.println(from+" -> "+to);hanoi(n-1,via,to,from);}递归题我一直在"看得懂"的阶段,从没自己从头推过一遍。考场上时间不够 + 心里没底,直接跳过了
八、接下来怎么练(具体到动作)
排名第 6 让我一开始挺满意,但 32.5% 的得分率说明我离"会用 Java 写东西"还差得远。所以不打算写"努力学习"这种话,只列能执行的动作:
- 每道编程题先在纸上写伪代码,再碰键盘**
猴子吃桃就是没写伪代码的后果——我以为自己"想清楚了",其实只想了第一步。
- 遇到"重复发生"的描述,先问一句"要不要循环"**
“换来的桃子还能再换”“因子要一个个试”——这类词出现时,答案八成是while或for,不是公式。
- 每天读一段自己昨天写的代码,逐行问边界对不对**
冒泡排序、回文的length() - 1 - i,都是边界问题。读代码比写代码更能发现这类错。
- 简答题按"定义 + 区别 + 场景"三段写**
哪怕只有 4 分,也值得写满三段。我这次简答 20 分只拿 3 分,纯粹是"答得太短"。
5. 抽象类、接口、多态,动手各写一个能跑的最小例子
不是抄书上的形状/圆形,是自己设计一个:装备系统、动物、支付方式都行。写完再删掉重写一遍,直到不看书也能写出来。
6. 递归从汉诺塔 + 斐波那契开始,手推 n=1,2,3 的完整调用过程
不用电脑,就在纸上画调用栈。递归这东西,推一遍胜过看十遍。
九、最后
这次考核对我来说最大的价值,不是拿到第 6 名,而是第一次把分数拆到每一道题上,看清楚自己到底缺什么。
以前我一直以为自己"Java 还行",因为选择题能做对、例题能看懂。但 39 分的卷子告诉我:看懂和写出来之间,隔着的不是天赋,是练习量。
下一章开始,我打算换个方式学——每看完一个知识点,立刻关掉教程,自己写一个能编译通过的小程序。写不出来就说明没学会,写得出来才继续往下。
毕竟下次考核,不会再有选择题给我兜底了