2007년 7월 25일 수요일

S/W 시험 문제

기억나는대로 적어보는 대략적인 내용임

1. CD관리 프로그램을 작성하는데 링크드 리스트를 이용해 작성하시오
insert, delete, sort등.

내가 푼 답: 소스작성 및 링크드리스트 그림.


2. 두개의 쓰레드가 전역변수를 공유하는데 문제점을 말하고 해결하시오.

내가 푼 답: 전역변수 access하는 부분을 binary semaphore를 이용하여 critical section보호.


3. int[MAX] 를 함수 내 지역변수에 잡고, 사용을 하는데 MAX가 100000000 (?)
어느정도인지 모르겠으나 큰값.
함수내에서 MAX만큼 for문으로 순환하며 사용을 하는 구문이 있음.
위 소스코드가 실행하면 crash되는데 이유를 설명하시오.

내가 푼 답: 가능성1: int에 MAX값을 담지 못해서 overflow.
                가능성2: 지역변수가 너무 크게 잡혀서 stack overflow.


4. getName(int studentNo, char *name) 함수 시그너처의 문제점을 설명하시오.

내가 푼 답: name변수의 max길이를 알 수 없어서 문제가 됨.
getName함수를 호출 하기 전에 malloc을 해서 사용 하면 되나, 문자열 최대 길이를 알 수 없음.


5. strcat함수가 같은 destination 를 가지고  연속으로 호출 되는 코드가 많을 때 함수 성능 개선 방법. (함수 파라메터나 return값을 변경해도 됨.)
strcat내부 코드가 주어짐. 코드내에 dest++을 하면서 '\0'을 찾는 코드가 있음.

내가 푼 답: static 지역변수를 이용하여 '\0'의 위치를 저장(cache)해 두고, 연속으로 같은 dest로 strcat함수가 호출 되면, dest++을 하면서 '\0'위치를 찾는 것이 아니라, 저장해 둔 '\0'위치를 사용.







댓글 없음:

댓글 쓰기