필기시험 문제 몇 개 (2010 - 09 - 18)
오늘 한 회사 에 가서 필기시험 을 보 는데, 그 중 몇 가지 문제 가 잘 되 지 않 았 다 고 생각 하여, 꺼 내 서 모두 와 토론 하 였 다.
1. 지적 문제
제목 은 통조림 10 상자, 상자 당 20 병, 병 당 800 그램 이라는 뜻 이다.그 중 한 상 자 는 병 당 50 그램 이 적 습 니 다. 지금 은 자동 저울 이 있 습 니 다. 동전 이 하나 있어 야 달 수 있 습 니 다. 지금 은 동전 이 하나 밖 에 없습니다. 즉, 한 병 에 50 그램 이 적은 상 자 를 어떻게 찾 느 냐 고 물 었 습 니 다.
이 문 제 는 한참 을 생각 했 지만 어떻게 대답 해 야 할 지 몰라 서 결국 비 워 두 었 다.
xanpeng
첫 번 째 사고: 첫 번 째 상 자 는 1 병, 두 번 째 는 2 병...10 상자 에서 10 병 을 꺼내다
만약 그 상자 가 50 그램 이 모자 라 지 않 았 다 면, 모두 800 * (1 + 2 +... + 10) = 44000
실제 한 상자 에 한 병 에 50 그램 이 적은 것 이 있 는데, 실제 중량 y 그램 을 달 아 보 았 다.
44000 - y = x * 50, x 는 x 번 째 상자, 목표 상자
폴 라 리 스 주: 그때 상 자 를 뜯 어서 꺼 낼 생각 은 없 었 어 요.제목 상 한 공장 사람 이 한 회사 에 보 낸 10 상자 의 통조림 이 라 고 했 기 때문에 돌아 올 때 그의 사장 이 그 에 게 전 화 를 걸 어 한 상자 에 문제 가 있다 고 말 했다. 그 에 게 고 르 라 고 했다. 나 는 포장 한 것 이 라 고 생각 했다. 뜯 으 면 안 되 겠 지? 다 뜯 어. 회사 에서 원 하지 않 지? 그래서 문제 가 있 는 지 없 는 지 풀 수가 없 었 다.아무래도 뜯 어야 될 것 같 습 니 다.
2. 기초 문제
2.1 한 평면 에 999 개의 선 을 그 으 면 최대 몇 부분 으로 나 눌 수 있 습 니까?유도 공식 을 써 내다.
이 문 제 를 본 첫 번 째 아 이 디 어 는 수학 에서 의 귀납법 을 이용 하여 1, 2, 3, 4 등 선 에 따라 나 눌 수 있 는 수량 에 따라 공식 을 유도 하 는 것 이다.그러나 이런 방법 은 비교적 번 거 로 움 을 증명 한다.그 다음 에 다른 방법 을 생각 했 습 니 다. 물론 규칙 을 찾 았 습 니 다. 교점 수 에 따라 계산 하 는 것 을 생각 했 습 니 다. 그런데 이런 방법 을 시도 해 보 니 약간 어렵 고 불가능 한 것 같 습 니 다.마지막 으로 가 고 싶 은 지 귀납법 을 사 용 했 는 지 쉽게 왔 지만 증명 과정 을 쓰 지 않 았 다.
2.2 무엇이 소프트웨어 의 생명 주기 입 니까?몇 단계 있어 요?
당시 소프트웨어 공학 을 배 울 때 모두 기억 하고 있 었 는데, 이때 단번에 잊 어 버 렸 다.몇 개 만 막 썼어 요.근 데 아마 맞 을 거 야.이런 문 제 는 별로 재미 없고 완전히 기억 에 남는다.
이 문제 의 답안 (참고):
소프트웨어 라 이 프 사이클 (SDLC, 소프트웨어 생존 주기) 은 소프트웨어 의 생 성 에서 폐기 되 는 라 이 프 사이클 까지 주기 적 으로 문제 정의, 타당 성 분석, 전체적인 설명, 시스템 디자인, 인 코딩, 디 버 깅 과 테스트, 검수 와 운영, 유지 보수 가 폐기 단계 까지 업그레이드 되 는 것 이다. 이런 시간 대별 사상 방법 은 소프트웨어 공학 의 사상 원칙 이다. 즉, 순서에 따라 출근 하 는 것 이다.점차적으로 추진 하려 면 모든 단계 에서 정의, 업무, 심사, 문 서 를 형성 하여 교류 나 검 사 를 제공 하여 소프트웨어 의 질 을 향상 시 켜 야 한다.
소프트웨어 라 이 프 사이클 (SDLC) 의 6 단계
(1) 문제 의 정의 와 기획.
이 단 계 는 소프트웨어 개발 자 와 수요자 가 공동으로 토론 하고 주로 소프트웨어 의 개발 목표 와 타당 성 을 확정한다.
(2) 수요 분석.
소프트웨어 개발 이 가능 하 다 는 것 을 확정 한 상황 에서 소프트웨어 가 실현 해 야 할 각 기능 에 대해 상세 하 게 분석 하 다.수요 분석 단 계 는 매우 중요 한 단계 로 이 단 계 를 잘 하면 전체 소프트웨어 개발 프로젝트 의 성공 에 좋 은 기반 을 다 질 것 이다.'유일 하 게 변 하지 않 는 것 은 변화 자체' 이 고 똑 같은 수요 도 전체 소프트웨어 개발 과정 에서 끊임없이 변화 하고 깊이 있 기 때문에 우 리 는 수요 변경 계획 을 제정 하여 이런 변화 에 대응 하여 전체 프로젝트 의 순 조로 운 진행 을 보호해 야 한다.
(3) 소프트웨어 디자인.
이 단 계 는 주로 수요 분석 결과 에 따라 전체 소프트웨어 시스템 을 디자인 한다. 예 를 들 어 시스템 구조 디자인, 데이터 베이스 디자인 등 이다.소프트웨어 디자인 은 일반적으로 전체적인 디자인 과 상세 한 디자인 으로 나 뉜 다.좋 은 소프트웨어 디자인 은 소프트웨어 프로그램 작성 에 좋 은 기 초 를 다 질 것 이다.
(4) 프로그램 인 코딩.
이 단 계 는 소프트웨어 디자인 의 결 과 를 컴퓨터 가 실행 할 수 있 는 프로그램 코드 로 바 꾸 는 것 이다.프로그램 인 코딩 에서 표준 에 맞 는 작성 규범 을 통일 시 켜 야 합 니 다.프로그램의 가 독성, 유지보수 성 을 확보 하고 프로그램의 운행 효율 을 높 인 다.
(5) 소프트웨어 테스트.
소프트웨어 디자인 이 완 성 된 후에 엄밀 한 테스트 를 통 해 소프트웨어 가 전체 디자인 과정 에서 존재 하 는 문제점 을 발견 하고 바로 잡 아야 한다.전체 테스트 과정 은 단원 테스트, 조립 테스트 와 시스템 테스트 세 단계 로 나 누 어 진행 된다.테스트 방법 은 주로 화이트 박스 테스트 와 블랙 박스 테스트 두 가지 가 있다.테스트 과정 에서 상세 한 테스트 계획 을 세우 고 테스트 계획 에 따라 엄격하게 테스트 를 하여 테스트 의 임 의성 을 줄 여야 한다.
(6) 유지보수 실행.
소프트웨어 유 지 는 소프트웨어 수명 주기 중 가장 오래 지속 되 는 단계 이다.소프트웨어 개발 이 완성 되 고 사용 에 들 어간 후에 여러 가지 원인 으로 인해 소프트웨어 는 사용자 의 요구 에 계속 적응 하지 못 한다.소프트웨어 의 사용 수명 을 연장 하려 면 반드시 소프트웨어 를 유지 해 야 한다.소프트웨어 의 유 지 는 오류 정정 유지 와 개선 성 유지 두 가지 측면 을 포함한다.
3. 프로 그래 밍 문제
제목: 정수 인 아랍 돈 수 를 중국어 형식 으로 1011 → 10011, 수출 한다.
제목 은 프로 그래 밍 을 하 는 것 이 가장 좋 고 프로 그래 밍 을 하지 않 으 면 문자 로 설명 할 수 있다.
이 문 제 는 어렵 지 않 습 니 다. 알고리즘 은 많은 사람들 이 알 아야 합 니 다. 그러나 진정 으로 프로 그래 밍 을 실현 하고 펜 으로 쓰 려 면 정확 하고 어렵 습 니 다.
polaris 가 이 문 제 를 푸 는 대략적인 사 고 는 정수 의 총 자릿수 를 확정 한 다음 에 각각 10 의 몇 번 으로 모델 을 제거 하고 모델 을 추출 한 결 과 를 제거 하고 모델 을 추출 하 는 것 이다.
이 안 에는 여러 개의 연속 적 인 0, 억, 만 명의 0 등 여러 가지 세부 사항 을 고려 해 야 한다.
다음은 폴 라 리 스 가 돌아 와 서 컴퓨터 에 완전한 것 을 만 들 었 습 니 다. 잘못 쓰 거나 나 쁜 점 을 지적 해 주 십시오.모두 더 좋 은 것 이 있 으 면 꺼 내 서 함께 토론 할 수 있다.
package com.polaris.test;
/**
* , 1011→ , 。
* @author xuxinhua(polaris) http://www.beijixing001.com
* 2010-09-18
* @version 1.0
*/
public class TranslateMoney {
//
private static String[] chineseMapStr = {" "," "," "," "," "," "," "," "," "," "};
//
private static StringBuilder chinMoney = new StringBuilder();
// 0 , 。 0
private static int flag = 0;
public static void main(String[] args) throws Exception{
//
}
/**
*
* @param money
* @param digit
* @return
*/
public static String translate(int money, int digit) {
if(digit==1) {
// 0,
if(money!=0){
//
String chinDigit = chineseMapStr[money];
chinMoney.append(chinDigit);
}
} else {
//
int divisor = (int)Math.pow(10, digit-1);
//
int quotient = money / divisor;
//
int remainder = money % divisor;
//
String chinDigit = chineseMapStr[quotient];
//
String unit = "";
if(quotient!=0) {
//
unit = getUnit(digit);
flag = 0;
} else {
// 、 , , , , flag
if(digit==9 || digit==5) {
chinDigit = "";
unit = getUnit(digit);
} else {
++flag;
}
}
// 0
if(flag>1) {
// ,
translate(remainder, digit-1);
} else {
// 、 , “ ” ,
if(quotient==1) {
if(digit==6 || digit==10)
chinDigit = "";
}
chinMoney.append(chinDigit).append(unit);
translate(remainder, digit-1);
}
}
return chinMoney.toString();
}
/**
* , 、
* @param digit
* @return
*/
private static String getUnit(int digit) {
String unit = null;
switch(digit) {
case 12:
case 8:
case 4:
unit = " ";
break;
case 11:
case 7:
case 3:
unit = " ";
break;
case 10:
case 6:
case 2:
unit = " ";
break;
case 9:
unit = " ";
break;
case 5:
unit = " ";
break;
}
return unit;
}
}
전체 클래스 파일 다운로드: TranslateMoney.java (글 마지막)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.