티스토리 뷰

Q. 1번

// 문제1) 다음 코드의 출력 결과는 ?
const num = 1234;
const str = '1234';

const a = num-'10';
const b = str-10;

console.log( a, typeof(a) );
console.log( b, typeof(b) );

// 정답)
// 1224 number
// 1224 number

Q. 2번

// 문제2) 다음 코드의 출력 결과는 ?

let a = 0;
let b = 0;
let c = 0;

if( a === 1 && b++ > 0 && ++c > 0){
   		console.log('Tiger');
}else{
   		console.log('Lion');
}

console.log(a, b, c);

// 정답)
// Lion
// 0, 0, 0

Q. 3번

// 문제3) sum의 출력 결과는 ?

const ar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum=0;

for (let i = 0; i < ar.length; i++) {
   		sum += i;
   		ar.pop()
}
console.log(sum);

// 정답)
// 10

Q. 4-1번

-> K&R 스타일과 BSD 스타일에 대해서 설명하세요.

  • K&R 스타일 
    • 블록을 여는 괄호가 블록 시작행의 끝에 있다는 점이 특이하며 명령은 블록 안쪽으로 들여쓴다. 조건절을 주석 처리할 때 약간 불편한 면이 있으나 if를 블록 시작으로 보므로 블록 구조 파악에는 큰 무리가 없다. 이 스타일의 가장 큰 장점은 여는 괄호가 한 줄을 차지하지 않아 수직으로 더 많은 코드를 볼 수 있다는 점이다.
// K&R 스타일

if (k == 5) {

     for (i = 0;i < 10;i++) {

          if (ar[i] == 10) {

              func(ar[i]);

          } else {

              proc(ar[i]);

          }

     }

}
  • BSD 스타일
    • GNU 스타일과 K&R 스타일의 장점만을 취한다. 여는 괄호가 별도의 줄에 작성되어 소스가 좀 더 길어지는 담점이 있지만 블록 구조가 더 잘보이며 블록이 if와 같은 레벨에 있어 들여쓰기도 심하지 않다. 블록의 시작과 끝이 하눈에 들어오고 수평 위치가 같아 유지, 보수에는 가장 유리한 스타일이다.
// BSD 스타일

if (k == 5)

{

     for (i = 0;i < 10;i++)

     {

          if (ar[i] == 10)

          {

               func(ar[i]);

          }

          else

          {

              proc(ar[i]);

          }

     }

}

Q. 4-2번

문제4-2) apple 과 num을 조합하여 정수형 변수를 만들고자 한다. 표기법에 맞게 변수명을 작성하세요.

카멜 표기법 : appleNum
-> 뒤에 있는 단어의 앞 문자를 대문자로 표기

헝가리안 표기법 : IappleNum
-> 맨 앞에 자료형을 나타내는 문자 

파스칼 표기법 : AppleNum
-> 단어 첫글자 모두 대문자

팟홀표기법(스네이크 표기법) : apple_num
-> 단어와 단어 사이에 _

케밥 표기법 : apple-num
-> 단어와 단어 사이에 -

Q. 5번

// 문제5) 다음 코드의 출력 결과는 ?
// isNaN 안에 있는 것이 숫자만 존재하는 냐에 따에 boolean 값을 return 한다.

	console.log( isNaN(10) );
	console.log( isNaN('10') );
	console.log( isNaN('$10') );
	console.log( isNaN('10원') );

// 정답)
// false
// false
// true
// true

Q. 6번

  • 자료형의 값 복사(깊은 복사)
    • JS는 기본 자료형(숫자, 문자열, boolean)의 값을 복사 할 때 값을 완전히 복사한다.
    • 따라서 =을 이용하여 값 복사를 쉽게 할 수 있다.

자료형의 값 복사(깊은 복사)

  • 객체의 참조 복사(얕은 복사)
    • 객체에 변수를 저장하면, 실제 값을 저장하는 것이 아니라 객체를 메모리 어딘가에 만들고, 객체의 참조(위치 값)을 저장하게 된다. 따라서, 객체(배열 포함)의 경우 =을 이용하여 복사하면, 참조 복사만 가능하다.

객체의 참조 복사(얕은 복사)

  • 객체의 깊은 복사
    • 객체의 깊은 복사를 하기 위해서는 새로운 객체를 만들고, for in 반복문을 통해 원복 객체에 반복문을 돌리며, 키와 값을 하나하나 옮겨야 한다.

객체의 깊은 복사

// 문제6) obj1의 출력 결과를 나타내고, 주목이라고 된 코드의 복사를 무슨 복사라고 할까요

	let obj1 = {
	    a:10,
	    b:20,
	}

	let obj2 = obj1; // 주목

	obj2.a = 30;
	obj2.b = 40;

	console.log(obj1);

// 정답)
// 출력 결과: {a : 30, b : 40}
// (  얕은  ) 복사

Q. 7번

- Q. 6번의 복사의 개념을 이해하면 풀수 있는 문제

// 문제7) 두번의 배열 ar 출력 결과값은 ?

let ar = [10, 20, 30, 40];
let br = ar;
br[0] = 99
console.log(ar);	// 출력1

br = [50, 60, 70, 80];
console.log(ar);	// 출력2

// 정답)
// 출력1
// [99, 20, 30, 40]

// 출력2
// [99, 20, 30, 40]

Q. 8번

// 문제8) 다음 함수는 데이타 교환이 일어 나지 않는다. 데이타 교환을 위하여 한줄의 코드를 작성하세요.

function f1( a, b ){
    let t = a; 
    a = b;
    b = t;
}

let a=10, b=20;
f1( a, b )
console.log(a, b);
// 출력결과 : 10, 20


// 여기에 한줄 코드를 작성하세요. 한줄, 한줄, 한줄 입니다.  
	// 정답)
	[a,b] = [b,a]

	console.log(a, b);
	// 출력결과 : 20, 10

Q. 9번

// 문제9) 출력결과가 잘못된 문장은 ? (답은 1개)

// 1.
let ar = [10,20,30];
console.log(ar);
// 출력결과 : [ 10, 20, 30 ]

// 2.
let br = Array();
console.log(br);
// 출력결과 : []

// 3. 이것은 배열의 item 값을 생성해주는 것이다. 10개의 크기 만큼 할당해줌
let cr = Array(10);
console.log(cr);
// 출력결과 : [ 10 ] -> 틀림
// 출력결과 : [ <10 empty items> ] -> 정답

// 4.
let dr = Array(10, 20, 30);
console.log(dr);
// 출력결과 : [ 10, 20, 30 ]

// 정답) 3

Q. 10번

- 다음 코드는 2의 승수에 해당되면 true, 해당되지 않으면 false를 반환하는 코드이다.

- ! 연산자와 & 연산자의 이해가 필요

// 문제10) 반복문의 결과값에 알맞은 불린값을 선택하세요.
for(let a=1; a<=9; a++)
{
   		console.log( a, !( a & (a-1)) );
}

// 결과( 각번호에 맞는 블린을 선택하세요 )
// 1 true
// 2 true
// 3 false
// 4 true
// 5 false
// 6 false
// 7 false
// 8 true
// 9 false

 

 

2019.08.30(금)

JS - 쉽지만 자주 틀리는 문제 2

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함