Java(자바) 2日次

블로그 移轉·2022년 10월 25일

Java

목록 보기
2/20

Java 面接 族譜 整理 (2日次)

1. 註釋이란 무엇이며、種類는?

註釋(Comment)의 目的은 소스코드에 對한 說明을 하기 爲한 것이다。코드를 作成한 本人 뿐만 아니라 他人이 그 코드를 봤을 때도 理解하기 쉽도록 說明을 해야 할 必要가 있기 때문에 註釋을 使用한다。註釋은 컴파일 時 無視되기 때문에 演算結果에 反映되지 않아 프로그램에 影響을 주지는 않는다。

/*
範圍를 指定해 文段을 註釋處理 할 時
註釋을 길게 作成할 時에 使用한다。
*/
// 文章(行)을 註釋處理할 時
// 짧은 註釋을 作成할 時에 使用한다。

參考로、Eclipse에서 使用되는 註釋 短縮키는 다음과 같다。
(該當 文章 或은 文段에 註釋 記號가 自動으로 붙으며 註釋處理가 된다。)

行 註釋 短縮키 → ctrl + /
(解除도 同一)

範圍註釋 短縮키 → ctrl + shift + /
範圍註釋 解除 短縮키 → ctrl + shift + \ (windows)

2. 註釋은 컴파일 時 어떻게 되는가?

註釋은 컴파일 時 코드 內容으로 認識되지 않고 無視되어 演算結果에 反映되지 않아 프로그램에 影響을 주지 않는다。但、사람이 코드를 理解하기 쉽도록 도와주기 爲해서 作成한다。

3. 들여쓰기는 왜 해야 되는가?

各々의 블록(class、method 等)들의 包含關係를 보여주며 理解를 빠르게 하기 爲해서이다。(可讀性)

4. 變數란 무엇인가?

變數(Variable)란 變하는 數를 意味한다。變數의 宣言은 메모리 割當이므로、變數는 메모리空間에 차지하는 하나의 房을 意味한다고 할 수도 있다。變數의 값은 프로그램 實行 途中 繼續 變할 수 있다。

反對로 常數(Constant)는 變하지 않는 數로 初期化 以後의 값은 變할 수 없다。

// 變數 使用 例示
int num1 = 11;

num = 22;
num = 35;
num = 80;

5. 變數宣言의 意味는 무엇인가?

變數宣言은 메모리空間 割當을 意味하며
1. 크기가 Data type(資料型)에 依해 決定되고
2. 內容이 어떤 타입이 들어갈 것인지(int、float、double…)決定되는 것을 意味한다。

// 變數 宣言 例示 - 變數의 타입 + 變數名
int num1;
float num2;
char ch;

//變數의 宣言과 初期化가 同時에 이루어질 境遇
int num1 = 1;
float num2 = 3.0;

// 常數 宣言 例示
final double PI = 3.14;

int型 變數에 double型 타입을 넣을 수 없다。
自動 縮小 型變換이 안 된다。(注意!)

6. 8兄弟(資料型)을 써보시오。

Data type(資料型) 9個

  • Primitive data type (基本型 8個)

  • Reference type (參照型 1個)

7. int型 範圍는 어떻게 되는가?

1byte = 8bit
2의8乘 → 256

2byte = 16bit
2의16乘 → 1024

整數를 表現하는 int資料型은 크기가 4byte로 32bit → 2의32乘이다。

符號表現을 除外한 31乘의 값을 計算하면
約 -21億~21億의 範圍 (正確히는 -2,147,483,648~2,147,483,647)가 表現이 可能하다。
(long型은 約 -9千2百京~9千2百京)

8. int num; 을 메모리로 說明해 보세요。

整數型 Data type(資料型)으로 4byte의 메모리空間을 割當받는 變數 num을 宣言한다。

int num;은 int(整數)型 타입의 num(變數名)變數를 宣言한다는 것으로、이것은 int타입의 4byte만큼을 이 變數를 爲해 메모리空間을 割當한다는 것이다。卽、num變數의 메모리空間이 4byte만큼 確保된다는 것을 意味한다。(메모리空間에 整數가 들어감)

9. 文字가 뿌려지는 原理에 對하여 說明하시오。

char ch = 'a';
出力結果 : a

데이터타입에 맞춰서 表를 찾아 A(文字) → 數字 인코딩 / 數字 → A(文字) 디코딩된다。

a = 97、A = 65와 같이 1:1 매칭으로 約束되어있음 (標準)
"_" 空白(sp) 32、0=34、1=3
ASCII코드、Unicode表를 參考한다。

  1. 인코딩
    a라는 文字가 char타입이라 컴퓨터가 알아 들을 수 있도록 ASCII코드(Unicode)표를 參考해 二進數로 變換되어 컴퓨터(cpu)에 傳達된다。

  2. 디코딩
    컴퓨터가 가진 二進數를 데이터타입을 參考하여 같은 값을 가지고 있는 폰트를 찾아 畫面를 찾아 畫面에 出力한다。
    왜 文字 「1」 의 코드 값 34가 메모리에 들어갔는데 出力할 때 다시 1이 나오는 것일까?

10. ASCII(아스키)코드란 무엇인가요?

ASCII(아스키)코드
美國情報交換標準符號(American Standard Code for Information Interchange)、줄여서 ASCII(아스키)코드는 1960年代 美國에서 英文 알파벳 大小文字 52個와 10個의 數字、32個의 特殊文字、空白 等을 비롯해 95個의 出力 可能한 文字들로 總 128個로 構成되어있다。

Unicode(유니코드)
韓國語나 日本語、中國語 等 英語 外의 文字들을 表現하기 爲해 ASCII에 追加된 Unicode(UTF-8)가 使用되고 있다。Java는 Unicode表를 使用한다。

class CharTypeUnicode {
	public static void main(String[] args) {
    	char ch1 = '헐';
        char ch2 = '확';
        char ch3 = 54736;	// 文字「헐」의 유니코드 값
        char ch4 = 54869;	// 文字「확」의 유니코드 값
        char ch5 = '0xD5D0';
        char ch6 = '0xD655';
        
        System.out.println(ch1 + " " + ch2);
        System.out.println(ch3 + " " + ch4);
        System.out.println(ch5 + " " + ch6);
    }
}

結果畫面

헐 확
헐 확
헐 확

11. 2의 補數法이란?

  • 補數(complement)란 두 數의 合이 進法의 밑數가 되게 하는 數를 意味한다。
    (10進數에서 6의 補數는 4、7의 補數는 3)
  • 컴퓨터에서는 陰의 整數를 表現하기 爲해서 2의 補數法을 使用한다。

2의 補數는 陽數 2進數의 1의 補數를 求한 後 거기에 1을 더해 陰數를 表現하는 方法을 意味한다。이 때 8비트를 넘어가는 第一 앞 자리의 數는 電算的으로 버려주게 된다。

2進數의 1의 補數는 비트를 反轉시켜 얻을 수 있다。(0→1、1→0)

12. 컴퓨터에서 陰의 整數 表現方法에 對하여 說明하시오。

1. 第一 앞에 符號비트를 1비트 使用한다。
(0→陽數、1→陰數)
하지만 +25와 -25를 더했을 때 0이 나와야하는데 符號비트만 바꾸면 0이 나오지 않는다는 問題가 생긴다。그래서 2의 補數法이 使用되기 始作했다。

2. 2의 補數法使用
(1의 補數 +1 → 第一 앞은 自動으로 符號비트가 맞춰짐)

int num1 = -10;
  1. 10에 對한 2進數의 2의 補數가 num1에 들어간다。
  2. 메모리에 32個 房을 만든다。(int、4byte = 32bit)
  3. 10을 2進數로 變更하고 1의 補數를 求한 後 1을 더해
    (2의 補數를 求한다。)
  4. num1에 들어간다。

13. -5의 컴퓨터에서의 2進數 값을 나타내시오。

-5의 2進數 값은 2의 補數法에 依해 求한 結果로 「11111011」 으로 나온다。
計算方法은 다음과 같다。

00000101
+5의 1의 補數 : 11111010
1을 더함 (+5의 2의 補數) : 11111011

+5 : 00000101
-5 : 11111011
0 : 0000000

14. 實數에서 誤差가 생기는 原因은 무엇인가?

實數는 두 實數 사이에는 無限大의 實數가 存在한다는 特性이 있다。
0과 1사이에도、0과 0.5사이에도、0과 0.1사이에도 無限大의 實數가 存在한다。

하지만 컴퓨터에 演算을 爲해서는 無限한 實數를 有限한 메모라에 올리는 過程이 必須的이다。
그래서 實數 全體를 다 담을 수 없기 때문에 實數의 範圍를 定해서 最大값과 最小값을 주고 그 사이에 表現할 수 있는 값을 미리 指定해 두고 近似값으로 使用한다。
例를 들면 double(-10^324~10^308)의 範圍가 定해져 있다。

그렇기 때문에 實數에는 誤差가 存在할 수 밖에 없다。

15. 實數의 表現法(固定小數法・浮動小數法)을 說明하시오。

整數를 2進數로 表現하는 方法과 實數를 2進數로 表現하는 方法이 判異하게 다르기 때문에 整數와 實數의 데이터타입을 나눌 수 밖에 없다。

固定小數點

→ 小數點이 固定되어 있다는 意味이다。
1.0124、0.5421、0.1234、0.2648

浮動小數點

→ 小數點이 떠다닌다는 意味이다。
1.123x10^-1、1.234x10^-2、0.1 1x10^-1、0.001 1x10^-2 ……
3.4e3 → 3.4x10^3 (浮動小數點) = 3400.0
3.4xe-3 → 3.4x10^-3 (浮動小數點) = 0.0034

profile
移轉했읍니다。

0개의 댓글