JavaRush /Java Blog /Random-KO /커피 브레이크 #58. Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문 여러 프로그래밍 언어를...

커피 브레이크 #58. Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문 여러 프로그래밍 언어를 아는 것의 이점

Random-KO 그룹에 게시되었습니다

Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문

출처 : Dev.to커피 브레이크 #58.  Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문  여러 프로그래밍 언어를 아는 것의 이점 - 1

1. Java의 두 가지 유형의 예외는 무엇입니까? 그들 사이의 차이점은 무엇입니까?

답변: Java에는 확인된 예외와 확인되지 않은 예외라는 두 가지 유형의 예외가 있습니다.
  1. 확인되지 않은 예외는 메서드나 생성자가 실행되어 메서드나 생성자 경계를 넘어 전파될 때 발생할 수 있는 경우 메서드나 생성자 키워드 문에서 선언할 필요가 없습니다.
  2. 반면에 확인된 예외는 생성자의 메서드나 키워드 문에서 선언되어야 합니다.

2. JVM이란 무엇입니까? Java를 "플랫폼 독립적 프로그래밍 언어"라고 부르는 이유는 무엇입니까?

답변: JVM(Java Virtual Machine)은 Java 바이트코드를 실행할 수 있는 프로세스 가상 머신입니다. 각 Java 소스 파일은 JVM에 의해 실행되는 바이트코드 파일로 컴파일됩니다. Java 언어는 각 개별 플랫폼에 대해 다시 작성하거나 다시 컴파일할 필요 없이 모든 플랫폼에서 실행할 수 있는 응용 프로그램을 생성하도록 설계되었습니다. Java Virtual Machine은 기본 하드웨어 플랫폼의 특정 명령 길이와 기타 기능을 인식하기 때문에 이를 가능하게 합니다.

3. 애플릿과 Java 애플리케이션의 차이점은 무엇입니까?

답변:
  • 애플릿은 Java 지원 브라우저 창에서 실행됩니다.
  • Java 애플리케이션은 브라우저 외부에서 실행될 수 있는 독립형 Java 프로그램입니다.
둘 다 JVM(Java Virtual Machine)이 필요합니다. 그러나 Java 애플리케이션의 실행을 시작하려면 특정 서명이 있는 기본 메소드가 필요합니다. Java 애플릿은 실행을 시작하기 위해 이러한 메소드가 필요하지 않습니다. 또한 Java 애플릿은 일반적으로 제한적인 보안 정책을 사용하는 반면 Java 애플리케이션은 일반적으로 보다 완화된 보안 정책을 사용합니다.

4. JDK와 JRE의 차이점은 무엇입니까?

답변:
  • JRE(Java Runtime Environment)는 기본적으로 Java 프로그램을 실행하는 JVM(Java Virtual Machine)입니다. 또한 애플릿을 실행하기 위한 브라우저 플러그인도 포함되어 있습니다.
  • JDK(Java Development Kit)는 사용자가 Java 애플리케이션을 개발, 컴파일 및 실행할 수 있도록 하는 JRE, 컴파일러 및 도구(예: JavaDoc 및 Java Debugger)를 포함하는 Java 언어용 모든 기능을 갖춘 소프트웨어 개발 키트입니다.

5. 서블릿이란 무엇입니까?

답변: 서블릿은 클라이언트 요청을 처리하고 동적 웹 콘텐츠를 생성하는 데 사용되는 Java 프로그래밍 언어 클래스입니다. 서블릿은 주로 HTML 양식으로 제출된 데이터를 처리 또는 저장하고, 동적 콘텐츠를 제공하고, 상태 비저장 HTTP에 없는 상태 정보를 관리하는 데 사용됩니다.

6. JSP 페이지란 무엇입니까?

답변: JSP(Java Server Page)는 두 가지 유형의 텍스트를 포함하는 텍스트 문서입니다.
  • 정적 데이터,
  • JSP 요소.
정적 데이터는 HTML, XML 등 모든 텍스트 형식으로 표현될 수 있습니다. JSP는 정적 컨텐츠와 동적으로 생성된 컨텐츠를 혼합하는 기술입니다.

7. 지시어란 무엇입니까? JSP에서는 어떤 유형의 지시문을 사용할 수 있나요?

답변: 지시어는 페이지가 서블릿으로 컴파일될 때 JSP 엔진에 의해 처리되는 명령입니다. 지시문은 페이지 수준 지침을 설정하고, 외부 파일에서 데이터를 삽입하고, 사용자 정의 태그 라이브러리를 지정하는 데 사용됩니다. 지시문은 <%@과 %> 사이에 정의됩니다. 다양한 유형의 지시어가 아래에 나와 있습니다.
  • 포함 지시문: 파일을 포함하고 파일 내용을 현재 페이지와 결합하는 데 사용됩니다.
  • 페이지 지시어: 오류 페이지, 버퍼 등 JSP 페이지의 특정 속성을 정의하는 데 사용됩니다.
  • Taglib: 페이지에서 사용되는 사용자 정의 taglib를 선언하는 데 사용됩니다.

8. System.gc() 및 Runtime.gc() 메서드의 기능은 무엇입니까?

답변: 이러한 메서드는 JVM에 대한 힌트로 사용되어 가비지 수집을 트리거할 수 있습니다. 일반적으로 JVM(Java Virtual Machine)은 주기적으로 또는 여유 메모리 수준이 낮을 때 가비지 수집을 실행합니다.

9. HashMap과 Hashtable에는 어떤 차이점이 있나요?

답변: Java의 HashMap과 Hashtable 간에는 몇 가지 차이점이 있습니다.
  1. Hashtable은 동기화되지만 HashMap은 동기화되지 않습니다. 비동기화된 객체는 일반적으로 동기화된 객체보다 더 나은 성능을 발휘하므로 이는 스레드되지 않은 응용 프로그램에 대해 HashMap을 더 좋게 만듭니다.
  2. Hashtable은 null 키나 값을 허용하지 않습니다. HashMap을 사용하면 하나의 null 키와 원하는 수의 null 값을 사용할 수 있습니다.
  3. HashMap의 하위 클래스 중 하나는 LinkedHashMap이므로 예측 가능한 반복 순서(기본 삽입 순서)를 원하는 경우 HashMap을 LinkedHashMap으로 쉽게 바꿀 수 있습니다. Hashtable을 사용한다면 쉽지 않을 것입니다.

10. JDBC란 무엇인가요?

대답: JDBC는 사용자가 데이터베이스 중에서 선택할 수 있도록 하는 추상화 계층입니다. JDBC를 사용하면 개발자는 특정 데이터베이스의 세부 사항에 대해 걱정하지 않고 Java로 데이터베이스 애플리케이션을 작성할 수 있습니다.

11. "정적" 키워드는 무엇을 의미합니까? Java에서 개인용 또는 정적 메소드를 대체할 수 있습니까?

답변: static 키워드는 변수 멤버나 메서드가 속한 클래스의 인스턴스를 요구하지 않고 액세스할 수 있음을 의미합니다 . 메서드 재정의는 런타임 시 동적 바인딩을 기반으로 하고 정적 메서드는 컴파일 시 영구적으로 바인딩되므로 사용자는 Java에서 정적 메서드를 재정의할 수 없습니다. 정적 메서드는 클래스의 인스턴스와 연결되지 않으므로 이 개념은 적용되지 않습니다.

12. 예외를 처리할 때 finally 블록의 의미는 무엇입니까?

답변: finally 블록은 예외 발생 여부에 관계없이 항상 실행됩니다. catch 문이 없어 예외가 발생하더라도 마찬가지입니다. 마지막으로 언급할 점은 finally 블록이 I/O 버퍼, 데이터베이스 연결 등과 같은 리소스를 해제하는 데 사용된다는 것입니다.

13. Java에서 예외와 오류의 차이점은 무엇입니까?

답변: 오류 는 프로그램 코드로 처리할 수 없는 심각한 상황입니다. 예외는 프로그램 코드로 처리할 수 있는 예외적인 상황입니다.

14. 객체는 언제 Java에서 가비지 수집 대상이 됩니까?

대답: Java 객체는 현재 그것을 사용하고 있는 프로그램에서 사용할 수 없게 되면 가비지 수집 대상이 됩니다.

15. 반복자란 무엇입니까?

답변: Iterator 인터페이스는 모든 컬렉션을 반복할 수 있는 다양한 메서드를 제공합니다 . 모든 Java 컬렉션에는 Iterator 인스턴스를 반환하는 Iterator 메서드가 포함되어 있습니다 . 반복자는 반복 중에 기본 컬렉션에서 요소를 제거할 수 있습니다.

16. 참조 전달과 값 전달이란 무엇입니까?

답변:
  • 객체가 값으로 전달되면 객체의 복사본이 전달된다는 의미입니다. 이렇게 하면 이 개체가 변경되더라도 원래 값에는 영향을 주지 않습니다.
  • 객체가 참조로 전달된다는 것은 객체가 실제로 전달되는 것이 아니라 객체에 대한 참조가 전달된다는 의미입니다. 이렇게 하면 외부 방법으로 변경한 내용도 모든 위치에 반영됩니다.

17. 자바 애플릿이란 무엇입니까?

대답: Java 애플릿은 HTML 페이지에 포함될 수 있고 Java 지원 클라이언트 브라우저에서 실행될 수 있는 프로그램입니다. 애플릿은 동적 및 대화형 웹 애플리케이션을 만드는 데 사용됩니다.

18. HashMap은 Java에서 어떻게 작동합니까?

답변: Java의 HashMap은 키-값 쌍을 저장합니다. HashMap 에는 해시 함수가 필요하며 hashCodeequals 메서드를 사용하여 컬렉션에서 요소를 설정하고 검색합니다. put 메소드가 호출 되면 HashMap은 키의 해시 값을 계산하고 컬렉션 내의 적절한 인덱스에 쌍을 저장합니다. 키가 있으면 해당 값이 새 값으로 업데이트됩니다. HashMap의 몇 가지 중요한 특징은 용량, 부하율 및 임계값 크기 변화입니다.

19. Java Collections Framework의 주요 인터페이스는 무엇입니까?

답변: Java 컬렉션 프레임워크는 객체 컬렉션에 대한 작업을 지원하도록 설계된 인터페이스 및 클래스 세트입니다. Java 컬렉션 프레임워크에 있는 주요 인터페이스는 다음과 같습니다.
  • 컬렉션은 해당 요소로 알려진 개체 그룹을 나타냅니다.
  • 세트는 중복된 요소를 포함할 수 없는 컬렉션입니다.
  • 목록은 반복되는 요소를 포함할 수 있는 순서가 지정된 컬렉션입니다.
  • 맵은 키를 값에 매핑하는 객체이며 중복된 키를 포함할 수 없습니다.

20. Java는 어떤 데이터 유형을 지원합니까? 오토박싱과 언박싱이란 무엇입니까?

답변: Java 프로그래밍 언어는 다음과 같은 8가지 기본 데이터 유형을 지원합니다.
  • 바이트
  • 짧은
  • 정수
  • 뜨다
  • 더블
  • 부울
오토박싱은 Java 컴파일러가 기본 유형과 해당 객체 래퍼 클래스 간에 수행하는 자동 변환입니다. 변환이 반대 방향으로 진행되는 경우 이 작업을 Unboxing 이라고 합니다 . 읽어주셔서 감사합니다. 기술 인터뷰에 행운이 있기를 바랍니다!

여러 프로그래밍 언어를 아는 것의 이점

출처: Dev.to 개인적으로 저는 모든 개발자가 하나 이상의 프로그래밍 언어를 알아야 한다고 확신합니다. 즉, 프로그래밍 언어에 관해 이야기한다면 개발자는 다국어를 구사해야 합니다.커피 브레이크 #58.  Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문  여러 프로그래밍 언어를 아는 것의 이점 - 2

기본 및 보조 언어

작업을 더 쉽게 하기 위해 이 기사에 사용된 몇 가지 용어를 명확히 하겠습니다. 나는 모든 개발자가 자신이 선호하는 하나의 언어를 가지고 있어야 한다고 믿습니다. 나는 이 언어를 주요 언어라고 부릅니다. 주요 언어 이외의 언어는 보조 언어로 부르겠습니다. 물론 개발자는 경력 전반에 걸쳐 기본 언어를 (두 번 이상) 변경할 수 있습니다. 이건 괜찮아. 이것이 설명되는 데에는 여러 가지 이유가 있습니다.

전문가

다중 언어 개발자에 대한 논의에서 개발자의 제2 언어 지식은 기본 언어에 대한 능숙도가 떨어지는 대가로 나온다는 주장이 자주 제기됩니다. 이 아이디어를 지지하는 사람들은 각각의 새로운 언어를 배우는 데 시간이 걸리며, 이번에는 기본 언어에 대한 지식을 습득하는 데 더 이상 시간을 소비할 수 없다고 가정합니다. 이런 사고 방식은 나에게 잘못된 것 같습니다. 나는 또 다른 비유를 봅니다: 스포츠. 한 스포츠를 하면 다른 스포츠의 성과도 향상되는 것으로 알려져 있습니다. 물론 두 종목 모두에서 금메달을 획득할 수 있으며 다트가 당신을 더 나은 수영선수로 만들어줄 가능성은 없습니다. 반면, 당신이 암벽 등반가라면 요가는 유연성과 균형 감각을 키우는 데 도움이 될 것입니다. 따라서 요가를 연습하면 요가를 하지 않았을 때보다 더 나은 등반가가 될 수 있습니다. 나는 각각의 추가 언어를 배우면 종종 당신이 알고 있는 다른 언어에 대한 능력도 향상될 것이라고 생각합니다.

더욱 다양한 도구

또한 여러 프로그래밍 언어를 아는 것은 개발자로서의 무기고를 크게 향상시킵니다. 시야가 넓어지고 특정 사물을 다양한 관점에서 볼 수 있습니다. 일상생활에서 예를 들어보겠습니다. 드라이버를 사용해 본 적이 있다면 십자 머리 나사에 익숙할 것입니다. 얼핏 보면 십자 나사는 모두 동일하고 드라이버 하나로 모두 조일 수 있는 것처럼 보입니다. 예, 일부 나사를 조이거나 푸는 것이 어렵지만 일반적으로 드라이버 하나만 있으면 충분합니다. 커피 브레이크 #58.  Java 개발자가 알아야 할 20가지 중요한 인터뷰 질문  여러 프로그래밍 언어를 아는 것의 이점 - 3하지만 어느 날 공구 가게에 들어가 아름다운 드라이버를 보고 다양한 유형의 십자 드라이버가 있다는 것을 발견했습니다. 이미 가지고 있는 드라이버가 Phillips(PH)라는 것을 알고 쌍둥이 자매인 Pozidriv(PZ)를 구입하기로 결정했습니다. 그리고 갑자기 일부 나사에는 하나가 더 적합하고 다른 나사에는 다른 나사가 더 적합하다는 것이 갑자기 밝혀졌습니다. 그들은 동일해 보이지만 서로 바꿔서 사용할 수는 없습니다 . (드라이버에 있는 문자 PH와 PZ가 무엇을 의미하는지 궁금하셨다면 이제 아실 것입니다.) 더 많은 지식과 추가 도구를 사용하면 다음에 Phillips 헤드 나사를 조여야 할 때 더 나은 작업을 수행할 수 있습니다. 프로그래밍 언어도 마찬가지다.

추가 지식에 대한 비용을 지불할 필요가 없습니다.

그래서 저는 개인적으로 추가 프로그래밍 언어를 배우는 것의 가치를 보지 못합니다. 두 언어 모두 똑같이 훌륭할까요? 아마 아닐 수도 있지만 그것이 당신의 목표일 것 같지는 않습니다. 모국어에 관해 새로운 것을 배우셨나요? 나는 이것을 확신합니다. 새로운 언어를 알면 그들 사이의 차이점이 드러날 것입니다. 그리고 이것은 차례로 당신의 호기심을 일깨울 것입니다. 새로운 언어에서는 왜 일이 다르게 처리되고 무엇을 하는지 궁금할 것입니다. 결론적으로 나는 삶의 예를 들겠습니다. 저는 Python으로 작성된 명령줄 도구 하나를 사용했습니다. 새 컴퓨터에 이 도구를 설치할 때마다 문제가 발생했고, 업데이트할 때마다 문제 수가 늘어났습니다. 도구 상자에 Go가 있으면 이 시나리오에서 Go의 이점을 즉시 알 수 있습니다. Go를 사용하면 아티팩트를 자체 포함 바이너리로 컴파일할 수 있습니다. 일단 컴파일되면 바이너리는 컴파일한 모든 컴퓨터에서 작동할 것이라고 확신할 수 있습니다. 그래서 Python CLI를 Go로 포팅했습니다. 이 새 버전에서는 더 이상 런타임이나 타사 종속성 변경에 대해 걱정할 필요가 없었습니다. 이는 작업에 가장 적합한 도구를 선택하는 좋은 예입니다. 그리고 선택하려면 다중 언어 개발자가 되어야 합니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION