필기시험 문제 몇 개 (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 (글 마지막)

좋은 웹페이지 즐겨찾기