[CS Interview] ๐ Interview
๐ Java ์ง๋ฌธ ๋ชจ์์ง
๐ Java ์ง๋ฌธ ๋ชจ์์ง
1 JVM
๐ Java๋ ํ๋ซํผ์ ์ข
์์ ์ด์ง ์๊ณ ์ด์์ฑ์ด ๋ฐ์ด๋๋ค.
๊ทธ๋ ๋ค๋ฉด JVM์ ํ๋ซํผ์ ์ข
์์ ์ด์ง ์๊ณ ์ด์์ฑ์ด ๋ฐ์ด๋๊ฐ?
- ์๋๋ค. JVM์ด ํ๋ซํผ์ ์ข
์์ ์ด๊ธฐ ๋๋ฌธ์,
.class
ํ์ผ์ด ํ๋ซํผ์ ์ ๊ฒฝ์ฐ์ง ์๊ณ ์ ๋ถ ๋์ผํ ์ ์๋ค.
๐ Java๊ฐ C๋ C++๊ฐ์ ์ธ์ด๋ณด๋ค ๋๋ฆฐ ์ด์ ?
๐ Jit Compiler๋ ๋ฐ์ดํธ ์ฝ๋ ์ ์ฒด๋ฅผ ์ปดํ์ผ ํ์ฌ Native Code๋ก ๋ณํํ๋๋ฐ ์ด๋, Native Code๋ ๋ฌด์์ ์๋ฏธํ๋๊ฐ?
๐ ์๋ฐ์๋ ํฌ์ธํฐ๊ฐ ์๋๊ฐ?
2 ๋๋ค์
๐ ๋๋ค์๊ณผ ์ต๋ช ํจ์๋ ๋ด๋ถ์ ์ผ๋ก ์๋ก ๊ฐ์ ๊ฒ์ธ๊ฐ?
3 ์์
๐ int num1 = null;์ ๋ถ๊ฐ๋ฅํ๋ค.
๋ฐ๋ฉด, Integer num2 = null; ์ ๊ฐ๋ฅํ๋ฉฐ ์ฌ์ง์ด if(null==num2)์ ๊ฐ์ ์์ผ๋ก ๋น๊ต๊น์ง ๊ฐ๋ฅํ๋ค.
์ ์ด๋ฐ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ์ธ์ง ์ด์ ๊ด๋ จํ์ฌ new์ ์ญํ ์ด ๋ฌด์์ธ์ง ํ ๋น๊ณผ ์ ์ธ์ ์ฌ์ฉํ์ฌ ์ค๋ช
ํด๋ผ
- ์๋ฐ์ ๋ฐ์ดํฐ ํ์
์ ๋ค์ ๋๊ฐ์ง๋ก ์ด๋ฃจ์ด์ง๋ค.
- reference type : ์ ์ธ -> ํ ๋น
- primitive type : ํ ๋น
- ์ด๋, reference type์ ์ ์ธ๋ง์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์กด์ฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง, primitive type์ ํ ๋น์ ํด์ผ์ง ๋ฉ๋ชจ๋ฆฌ์์ ์ ์์ ์ผ๋ก ์กด์ฌํ๊ฒ ๋๋ค.
- ๋ฐ๋ผ์ reference type์ null์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๋ nullํ์์ด ๊ฐ๋ฅํ์ง๋ง, primitive ํ์ ์ ๊ฐ ๊ทธ ์์ฒด๋ฅผ ํ ๋นํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ null์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํค๋ ๊ฒ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
๐ ์๋ฐ์์ ๋ชจ๋ ํด๋์ค๋ Object ํด๋์ค๋ฅผ ์์๋ฐ๊ฒ ๋๋๋ฐ, ์๋ฐ์์๋ ๋ค์ค ์์์ ๋ง๋๋ค.
๊ทธ๋ ๋ค๋ฉด Animal์ ์์๋ฐ์ dog ํด๋์ค๋ Object ํด๋์ค๋ฅผ ์์๋ฐ์ง ๋ชปํ ๊ฒ์ธ๊ฐ?
- ์์๋ฐ์ Animal ํด๋์ค ์์ฒด๊ฐ Objectํด๋์ค๋ฅผ ์์๋ฐ์ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ dog ํด๋์ค๋ ์์๋ฐ์๋ค๊ณ ๋ณผ ์ ์๋ค.
๐ ๋ค์ ํจ์๋ ์ ์์ ์ผ๋ก ์๋ํ๋๊ฐ?
class A {
int num = 1;
public void toString(){
System.out.println("hello");
}
}
- ์ ์์ ์ผ๋ก ์๋ํ์ง ์๋๋ค.
- ๋ค์๊ณผ ๊ฐ์ด Object์
toString
ํจ์์ ์ถฉ๋ํ๋ค.
๐ ๋ค์ ์ฝ๋๋ ์คํ๋๋๊ฐ? ๋ง์ฝ ์คํ๋๋ค๋ฉด ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋์ค๋๊ฐ?
class ConstructorTest{
private void ConstructorTest(){
System.out.println("Constuctor");
}
}
public class Main {
public static void main(String[] args) {
ConstructorTest ct = new ConstructorTest();
}
}
- ์ฑํ์ ๋๋ ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์๋๋ค.
- ์์ฑ์๊ฐ ์๊ธฐ ๋๋ฌธ์
Object
์์ ์์๋ฐ์ ๊ธฐ๋ณธ ์์ฑ์๋ก ์์ฑ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐