程序员复习心得

70 阅读4分钟

本次考试复习需要准备win8以上系统的电脑,此电脑仅供学员在家练习使用,考试的时候,考场的设备都是现成的

本次技能考试一共3个题目,第一题为案例分析题(文字要求背诵,考试的时候按照顺序填入),另外2题均为实操题,复习视频参考B站链接。

复习策略:红色部分为重点内容,实操重点看试题一,试题二、试题三。

试题2-1:

https://www.bilibili.com/video/BV1jrtvzJEXN/?spm_id_from=333.1387.homepage.video_card.click

试题2-2:

https://www.bilibili.com/video/BV1qrtvzJEsY/?spm_id_from=333.1387.homepage.video_card.click

试题3:

https://www.bilibili.com/video/BV1ZrtvzJEzG/?spm_id_from=333.1387.homepage.video_card.click

试题5:

https://www.bilibili.com/video/BV1Ru33zKEQL/?spm_id_from=333.1387.homepage.video_card.click

试题6:

https://www.bilibili.com/video/BV1LT33zqEKh/?spm_id_from=333.1387.homepage.video_card.click


试题1、补充完整详细设计说明内容

用户管理模块

1:用户登录。

2:用户名和密码。

帖子管理模块

3:查看帖子。

4:为用户提供收藏帖子的页面。

5:当前登录用户的唯一ID和被收藏帖子的唯一ID。

试题2根据题目描述,编写Java代码完成测试。

测试用例说明

测试场景输入 ( count , price )预期输出逻辑验证
单件无折扣(1,100)100数量小于等于1,无折扣
打95折(2件)(2,100)1902件1000.95=190
打95折(5件)(5,100)4755件1000.95=475
打85折(6件)(6,100)5106件1000.85=510
打85折(10件)(10,100)85010件1000.85=850
打8折(10件以上)(12,100)96012件1000.8=960
不触发批量优惠(285<300)(3,100)2853件1000.95=285(不减30)
触发批量优惠(960>300)(12,100)870960-3*30=870
边界值(0件)(0,100)0数量为0,总价为0
边界值(5件)(5,100)475验证打95折的边界
边界值(10件)(10,100)850验证打85折的边界
极端值(price=0)(100,0)0单价为0,总价为0
极端值(count极大)(100,100)72201001000.8=8000——》8000-780=7220

关键测试点

  1. 折扣阶梯:确保1件、2-5件、6-10件、>10件的折扣正确。

  2. 批量优惠:检查 Math.floor(totalPrice / 300) * 30 是否精确计算。

  3. 边界值:验证 count = 0、5、10 等临界值。

  4. 鲁棒性:测试 price = 0 或极大 count 时的行为。

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class ComputeFunctionTest {

// 测试单件商品(无折扣)

@Test

public void testSingleItemNoDiscount() {

assertEquals(100.0, compute(1, 100.0), 0.001);

}

// 测试 2-5 件商品(5%折扣)

@Test

public void testFivePercentDiscount() {

// 2 * 100 * 0.95 = 190

assertEquals(190.0, compute(2, 100.0), 0.001);

// 5 * 100 * 0.95 = 475

assertEquals(475.0, compute(5, 100.0), 0.001);

}

// 测试 6-10 件商品(15%折扣)

@Test

public void testFifteenPercentDiscount() {

// 6 * 100 * 0.85 = 510

assertEquals(510.0, compute(6, 100.0), 0.001);

// 10 * 100 * 0.85 = 850

assertEquals(850.0, compute(10, 100.0), 0.001);

}

// 测试 10 件以上商品(20%折扣)

@Test

public void testTwentyPercentDiscount() {

// 12 * 100 * 0.8 = 960

assertEquals(960.0, compute(12, 100.0), 0.001);

}

// 测试批量优惠(满300减30)

@Test

public void testBulkDiscount() {

// 不触发批量优惠(285 < 300)

// 3 * 100 * 0.95 = 285

assertEquals(285.0, compute(3, 100.0), 0.001);

// 触发批量优惠(960 / 300 = 3.2 → 减 3 * 30 = 90)

// 960 - 90 = 870

assertEquals(870.0, compute(12, 100.0), 0.001);

}

// 测试边界条件(count = 0, 5, 10)

@Test

public void testEdgeCases() {

// count = 0

assertEquals(0.0, compute(0, 100.0), 0.001);

// count = 5(5%折扣)

assertEquals(475.0, compute(5, 100.0), 0.001);

// count = 10(15%折扣)

assertEquals(850.0, compute(10, 100.0), 0.001);

}

// 测试极端情况(price = 0, count极大)

@Test

public void testExtremeValues() {

// price = 0

assertEquals(0.0, compute(100, 0.0), 0.001);

// 100件,单价100,20%折扣 → 8000,满300减780(26 * 30)

// 8000 - 780 = 7220

assertEquals(7220.0, compute(100, 100.0), 0.001);

}

// 原函数(待测试)

public double compute(int count, double price) {

double totalPrice = 0.0;

if (count <= 1) {

totalPrice = count * price;

} else if (count <= 5) {

totalPrice = count * price * 0.95;

} else if (count <= 10) {

totalPrice = count * price * 0.85;

} else {

totalPrice = count * price * 0.8;

}

double floorPrice=Math.floor(totalPrice / 300);

totalPrice -= floorPrice * 30;

return totalPrice;

}

试题3、编写Java代码完成组件编程。

具体代码:

Log4j.properties文件内容:

#设置根日志级别为DEBUG,输出器为console

log4j.rootLogger=DEBUG, console

控制台输出配置

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

#日志格式配置:

#%p- 日志级别(DEBUG/INFO/WARN/ERROR)

#%d{yyyy-MM-dd HH:mm:ssSSS}- 日期时间,精确到毫秒

#%c- 日志记录器的名称

#%m- 日志消息

#%n- 换行符

log4j.appender.console.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ssSSS} %c %m%n

LogTest.java文件内容:

package test;

import java.io.File;

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;

public class LogTest {

// 获取Logger实例

private static final Logger logger = Logger.getLogger(LogTest.class);

public static void main(String[] args) {

// TODO Auto-generated method stub

// 加载log4j配置文件

String log4jConfigFile = "src" + File.separator + "log4j.properties";

PropertyConfigurator.configure(log4jConfigFile);

// 测试日志输出

// DEBUG: 调试信息

// INFO: 一般信息

// WARN: 警告信息

// ERROR: 错误信息

logger.debug("debug message");

logger.info("info message");

logger.warn("warn message");

logger.error("error message");

}

}