Tech Interview
[TI][JAVA] JVM 메모리 구조
[Tech Interview] JVM의 메모리 구조에 대해서 설명해 주세요. JVM 메모리 구조에 대해서 알아야 하는 이유? JVM을 몰라도 코드 짜고 실행시키는데 큰 문제는 없습니다. 다만 대규모 프로젝트에서는 메모리 관리에 따라 프로그램의 성능이 크게 차이가 날 수 있으므로 제대로 된 JAVA 개발자라면 JVM 메모리 구조에 대해 제대로 알아 둘 필요가 있겠죠? JVM 이란? JVM은 Java Virtual Machine의 약자로, 자바 가상 머신을 의미합니다. JVM은 자바와 운영체제 사이에서 중개자 역할을 수행합니다. 또한 자바가 운영체제에 구애 받지 않고 프로그램을 실행할 수 있도록 도와줍니다. 또한 가비지 컬렉터를 이용한 메모리 관리도 자동으로 수행하며, 다른 하드웨어와 다르게 레지스터 기반이..
[TI][Java] Java 접근 제어자, Protect와 Private의 사용
[Tech Interview] Java 접근 제어자에는 무엇이 있는지 설명해주시고 Protect와 Private는 어느 시점에 어떻게 사용될 수 있는지 이야기 해주세요. Java 접근 제어자 private default protected public private -> default -> protected -> public 순으로 보다 많은 접근을 허용합니다. public 모두가 접근 가능 protected 같은 패키지 내의 클래스만 접근 가능, 상속 받은 경우에도 가능 default 같은 패키지 내의 클래스만 접근 가능 private 같은 클래스일 때만 접근 가능 접근 제어자를 왜 사용할까? 접근 제어자를 구분해서 사용하지 않고 모두 public으로 해줘도 프로그램은 무리 없이 돌아갈 것입니다. 하지만..
[TI][Java] Managed 언어 vs Unmanaged 언어, 차이와 장단점
[Tech Interview] Managed - Unmanaged 언어의 차이는 무엇이고 어떤 장, 단점이 있나요? Managed 언어 vs Unmanaged 언어 분류 기준 : [메모리 관리 주체] Managed Language는 외국에서는 많이 쓰이지 않는 용어로, Managed Code라는 말이 많이 쓰인다고 합니다. Managed Code는 MS 진영에서 C#을 만들면서 사용된 용어로, 코드가 하드웨어에서 바로 구동되는 것이 아니라, 특정 런타임 환경에 의해 관리되고 의존하는 코드를 의미합니다. 여기서 특정 런타임 환경이란 자바의 JVM이나 C#의 CLR, 자바스크립트의 V8 같이 특정 언어 코드를 구동해주는 가상머신, 인터프리터, 엔진 등을 의미한다고 합니다. 즉, 가상머신 위에서 관리되고 작동..