728x90
728x90
자바기반 앱개발 & 웹서비스 구축 개발자
프로그래밍언어활용

수업이 끝나면서 각 과목 별 시험 쳤던 문제들을 복습 겸 정리해보겠습니다.
이번이 2번째 글이고 관련글은 아래 목록을 확인해주세요.

 

 

애플리케이션테스트 문제

 


 

[기본 문법 활용하기]

1. 다음 중에서 올바른 주석이 아닌 것은?

1)  /** 주석 */          2) /* 주석  */          3) /*주석           4) //주석

 

2. 자바가 지원하는 기초 자료형의 종류를 나열하고 간단하게 설명하시오.

boolean :  1bit 로 TRUE, FALSE 값을 가진다.
char : 2byte 크기로 문자 1개를 저장하는 데이터 타입이다.
byte : 1byte 크기로 정수를 저장하는 데이터 타입이다.
short : 2byte 크기로 정수를 저장하는 데이터 타입이다.
int : 4byte 크기로 정수를 저장하는 데이터 타입이다.
long : 8byte 크기로 정수를 저장하는 데이터 타입이다.
float : 4byte 크기로 실수를 저장하는 데이터 타입이다.
double : 8byte 크기로 수를 저장하는 데이터 타입이다.

 

3. 유효한 자바 식별자가 아닌 것은?   1,2,4,5

1) class
2) #_of_workers
3) countOfLettersInString
4) 1stLevel
5) person#


* 자바 식별자 명명 규칙

- 첫 번째 글자는 문자이거나 '$', '_'이어야 함
- 두번째 이후의 글자는 숫자, 문자, '$', '_'이어야 함
- 자바의 예약어, 상수 값을 표현하는 단어 true, false, null는 식별자로 사용할 수 없음
- 길이 제한 없음
- 공백은 포함할 수 없음

 

4. 다음과 같은 문장이 순차적으로 실행되는 경우, 각각의 문장이 실행된 후의 변수의 값을 구하시오.

int x=10, y=2, z=2;

z = ++x /y;                    1) x       11          y       2           z        5      
x*= y+1;                        2) x       33          y       2           z        5      
z = ++x + y++;               3) x       34          y       3           z       36      

 

5. 다음의 코드를 컴파일할 때, 오류가 나는 이유는?

public class Test{
	public static void main(String[] args) {
		int x;
		System.out.println(x);
		}
}

지역변수 x의 값을 초기화하지 않아서

 

6. 다음 클래스를 컴파일 한 후 실행결과는?

public class Test{
	public static void main(String[] args) {
		int[] a = { 1,2,3,4,5,6 };
		int i = a.length - 1;
		while (i>=0) {
			System.out.print(a[i]);
			i--;
		}
	}
}

654321

 

7. 자바에서 다음 클래스를 컴파일한 후 실행결과는?     3

public class Test{
	public static void main(String[] args) {
		Spring city = "서울";
		Spring country = "";
		switch(city) {
			case "서울" :
			case "부산" : country = "한국";
 			case "북경" : country = "중국";
			case "동경" : country = "일본"; break;
				default : country = "대상없음";
		}
					System.out.println(country);
	}
}

1) 컴파일 에러            2) 한국               3) 일본            4) 대상없음

 

[언어특성 활용하기]

8. 객체를 초기화하는 용도로 사용되는 생성자(Constructor)의 특징으로 잘못된 것은?     3

1)  생성자 이름은 클래스의 이름과 동일하다.
2)  클래스 정의 시 생성자를 만들지 않으면 객체가 생성될 때 컴파일러가 자동으로 만든다.
3)  반환 값(return type)을 갖는다.
4)  객체를 생성할 때 자동으로 호출된다.

생성자는 다음과 같은 new 표현식을 통하여 객체의 생성과 함께 실행된다.  Example ex = new Example();
클래스는 초기화를 위하여 생성자(constructor)라는 특별한 코드 블록을 가질 수 있다. 즉, 생성자는 클래스가 new 표현식에 의해 인스턴스화되어 객체를 생성할 때, 객체의 레퍼런스를 생성하기 전에 객체의 초기화를 위해 사용되는 코드의 블록이다.


생성자는 자바 클래스의 멤버가 아니며, 멤버가 아니므로 상속되지 않는다. 따라서, 오버라이딩의 대상이 될 수도 없다. 또한, 일반적인 메소드 호출방법으로 호출할 수 없다. 생성자는 접근 제한 수식어인 public, protected, private 만을 쓸 수 있으며, abstract, final, native, static, strictfp, synchronized 등의 수식어를 사용할 수 없다.

 

9. 접근 제어자는 클래스와 클래스의 멤버 접근에 대한 접근 정도를 지정할 때 사용한다. 클래스 멤버의 접근지정자 4가지를 나열하라.

public :   공개된 접근 지정자, 모든 클래스에서 접근 가능
protected :   같은 패키지와 상속받은 모든 클래스에서 접근 가능
private :   비공개로 현재 클래스에서만 접근 가능
default :   같은 패키지 내의 모든 클래스에서 접근 가능

 

10.  다음 코드 설명 중 올바른 것은?    2

public class Test {
	public static void exam( ){
		int i = 5;
		int j = 7;
		if(i>20) {
			int k = i+j;
		}
		System.out.println(k);
	}
	public static void main(String[] args) {
		exam();
	}
}

1) 지역변수 k는 디폴트 초기화되고 if문 조건이 만족하지 않으므로 0이 출력된다.
2) System.out.println(k); 부분에서 컴파일 오류가 발생한다.
3) exam()을 호출하기 위해서는 객체 생성을 해야한다.
4) 정상적으로 수행되고 결과는 12가 출력된다.

 

 

11.  다음은 자바 예약어 (keyword)에 대한 설명이다. (ㄱ)과 (ㄴ)에 들어갈 적절한 예약어는?

클래스 접근 지정자(Modifier)로 (ㄱ) 이 명시되면, 다른 클래스들은 해당 클래스를 상속 받을 수 없다. 메소드의 Modifier로 (ㄱ) 이 지정되면 자식 클래스는 그 메소드를 오버라이딩 할 수 없다. (ㄴ) 메소드가 하나 이상 존재하는 클래스는 클래스 선언부에 (ㄴ) 제어자(Modifier)가 선언되어야 한다. (ㄴ) 메소드가 존재하는 클래스를 상속받는 자식 클래스에서는 해당 (ㄴ) 메소드를 구현하거나 해당 클래스의 선언부에 (ㄴ) 제어자(Modifier)가 명시되어야 한다.

(ㄱ) : final
(ㄴ) : abstract

 

 

12. 다음 중 자바 인터페이스에 대한 설명 중 틀린 것은 ?     2

1)  인터페이스는 다중상속의 장점인 다양한 계층구조 형성을 지원한다.
2)  인터페이스는 추상 메서드와 구현부가 있는 메소드를 가질 수 있다.
3)  하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다.
4)  인터페이스는 다른 인터페이스를 상속할 수 있다.

인터페이스는 추상클래스와 final 변수로만 이루어진 클래스이며 일반 클래스가 인터페이스를 구현해주어야 상속 가능.
클래스가 상속을 통해 구현하는데 한계가 있는 경우 자바에서 불가능한 다중상속을 흉내내기 위한 도구이다.

인터페이스 특징은 구현된 메소드는 올 수 없고 추상메소드만 정의할 수 있다. 일반 클래스는 여러 인터페이스를 다중 상속할 수 있다
인터페이스 간의 상속에서는 다중상속이 제공된다. 상속을 받은 일반 클래스는 인터페이스의 추상메서드를 모두 재정의해야한다.

 

 

13. 다음은 예외 처리를 위한 keyword를 설명한 것이다. 적절하지 않은 것은?     4

1)  try :  예외발생 가능성 있는 소스코드 부분이 들어가는 키워드이다.
2)  catch :  예외 처리 코드가 들어가는 키워드이다.
3)  throws : 메소드가 호출된 곳으로 예외를 던질 때 사용하는 키워드이다.
4)  finally : 예외가 발생하지 않으면 실행되지 않는다.

finally는 예외 발생 여부와 별개로 반드시 실행해야 하는 부분이다.

 

 

[라이브러리 활용하기]

14. 다음이 설명하는 특징을 가진 인터페이스는?       2

ㄱ. Key와 Value의 매핑으로 관리된다.
ㄴ. Key는 중복될 수 없다.
ㄷ. Collection 인터페이스를 상속하지는 않는다

1) Set        2)  Map       3) List       4) Iterator

Collection : 목록성 데이터를 처리하는 자료구조를 통칭한다. 자료구조는 어떤 정보를 담는 것을 의미하며 하나의 데이터가 아닌 여러 데이터를 담을 때 사용한다. 배열이 가장 기본적인 자료구조이며, DTO 또한 자료를 담는 하나의 방식이다. Collection 인터페이스는 java.util 패키지에 선언되어 있으며, 여러 개의 객체를 하나의 객체에 담아 처리할 때 공통적으로 사용되는 여러 메소드를 갖고 있다. add(), addAll(), clear(), contains(), equals(), hashCode() , isEmpty(), iterator(), remove(), toArray() 등이 있다.

 

 

15. 다음 코드의 실행 결과가 나타나도록 빈곳에 적당한 코드를 작성하시오. [상속과 오버로딩 이해하기]

class Person{
	String name;
	int age;

	public Person(String name, int age){
		this.name=name;
		this.age=age;
	}
	public void show(){
		System.out.println(name+" "+age);
	}
}

class Student extends Person{
	String major;
	(ㄱ) //생성자 작성
	(ㄴ) //show() 함수 오버라이딩
}

public class Test {
	public static void main(String[] args){
		Person p = new Student("Heycoding", 20, "피아노");
		p.show();
	}
}

 

(ㄱ),  (ㄴ)  

public Student(String name, int age, String major) {
	super(name, age);
	this.major=major;
}
public void show(){
	super show();
	System.out.println(major+" ");
}

 

 

[언어특성 활용하기]
16. java.lang 패키지에 속해 있으며 자바의 최상위 클래스는 무엇인가?
>> object

 

[라이브러리 활용하기]

17. StringBuffer 클래스에 대한 설명 중 잘못된 것은?        2

1) java.lang 패키지에 포함되어 있다.
2) StringBuffer 객체에 저장된 문자열은 변경할 수 없다.
3) StringBuffer의 reverse() 메소드는 실행결과 문자열은 거꾸로 바뀐다.
4) 지정된 문자열로 초기화된 스트링 버퍼를 생성할 수 있다.

* 자바JDK가 제공하는 라이브러리 String 클래스와 StringBuffer 클래스의 특징 비교

스트링 : 변경 불가, 스트링(문자열)을 연결할 때 매시간 새 경우를 만들어서 느리며 많은 메모리 소비, 객체의 equal()메소드 치환하여 2개의 스트링 내용 비교 가능
스트링버퍼 : 객체 생성후 값 변경 가능, 빠르고 적은 메모리 소비, equals()메소드 치환안함. append와 insert를 통해 조작 가능. 객체의 길이는 스트링 길이에 따라 가변적. 

 

 

[기본문법활용하기]

18. 다음은 StringTokenizer 라이브러리 클래스를 사용한 코드이다. (ㄱ)와 (ㄴ)에 맞는 코드를 작성하고 코드 실행 후 결과를 적으시오.

import java.util.StringTokenizer;

public class Example{
	public static void main(String[] args){
		int sum=0;
		StringTokenizer st = new StringTokenizer("a=3, b=5, c=6", ",=");
		while((ㄱ)) {
			String token = (ㄴ);
			System.out.println(token);
			int n = 0;
			try{
				n = Integer.parseInt(token);
			}catch(NumberFormatException e){
				//정수가 아닌 경우 아무것도 하지 않고 그냥 넘어 간다.
			}
			sum += n ;
		}
		System.out.println("합은 "+sum);
	}
}

(ㄱ)  st.hasMoreToken( );
(ㄴ)  st.nextToken( );

 

 


19. 자바의 상속 특징 중에서 틀린 것은?     3


1)  자바에서의 클래스의 다중 상속을 지원하지 않는다.
2)  자바에서의 상속이 횟수에 대한 제한이 없다.
3)  자바에서 모든 클래스의 최상위 슈퍼클래스는 java.lang.System이다.
4)  자바에서 상속을 표현하는 키워드가 extends 이다.

자바에서 모든 클래스의 최상위 슈퍼클래스는 java.lang.Object이다.

 

 

[언어특성활용하기]

20.  객체지향의 특징 3가지는?

>> 캡슐화, 상속, 다형성

 

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v