본문 바로가기
카테고리 없음

2024 기술면접

by SSONG1521 2024. 10. 30.

코딩테스트 ->

 

spring controller

while, for문, 구구단 문제 많이 나온다

SQL문 많이 나온다.

DB 조인 상태

 

 

 

 

1. DB 의 언어 3가지

- DDL : data schema를 연결하기 위해서 create alter drop

- DML : data를 조작하기 위한 language   insert delete update select

- DCL  : data 전반을 controller 하는 grant, revoke

 

 

 

2. interface : 모든 메소드가 추상화된 메소드로 이루어진 객체 (변수: final변수)

   vs abstract class와 비교해주기 (일부만 추상화된 method를 가지고 있다.) 일반 class는 일반 변수 final 둘 다 있다.

  상속받을 때, implements로 받는다. class는 extends로 받는다.

 

자바 8 이상에서는 static으로 interface에서 구현 가능하다.

 

 

3. overloading vs overriding 다형성 Polymorphism (OOP)

OOP부터 얘기해야한다. object oriented programming의 언어로써 그 중 하나의속성이 다형성이다. (그 외에 OOP는 말 안해주어도 된다.)

- overloading: 같은 class 내에서 같은 method 이름을 가진 것 (parameter의 수나 parameter의 type으로 구분한다.)

- overriding: 상속 (extends, implements) 부모 class를 상속받아서 쓰는 것

                    부모 class도 내 것, 자식 class인 내 것도 내 것

 

 

4. JVM(Java Virtual Machine): 자바를 실행하기 위한 가상 기계(컴퓨터)  ->> JAVA와 OS의 중재적 역할

 

 (1) 클래스 로더 (Class Loader)

 (2) 메모리영역

 

  • 메서드 영역 (Method Area): 클래스 정보, 필드, 메서드 데이터 등을 저장합니다.
  • 힙 영역 (Heap Area): 객체가 동적으로 할당되는 영역으로, 모든 객체와 배열이 저장됩니다.
  • 스택 영역 (Stack Area): 각 스레드에 대해 생성되며, 메서드 호출 시 지역 변수와 메서드 호출 정보를 저장합니다.
  • PC 레지스터 (Program Counter Register): 현재 실행 중인 Java 가상 머신 명령의 주소를 저장합니다.
  • 네이티브 메서드 스택 (Native Method Stack): Java가 아닌 언어로 작성된 메서드를 위한 스택입니다.

 

 

 

 

5. 접근제어자 종류

 (1) public : 접근 제한이 없다.

 (2) private : 같은 class 내에서만 접근 가능

 (3) protected : 같은 패키지 내의 class와 상속한 자식 class에서 접근 가능

 (4) default : 같은 패키지 내의 class 접근 가능

 

 

 

 

6. Spring MVC 구조

 - Dispatcher Servlet -> annotation 으로 controller

 - controller: 전체적 통제

 - service: 비지니스 로직

 - dao : DB랑 연동

 

dao: sql 단위   ORM-> myBatis

repository: 객체단위  ORM -> JPA

 

 

 

 

 

 

 

 

 

7. 객체 지향 프로그래밍(OOP, Object-Oriented Programming) : 이러한 개념들을 통해 OOP는 코드의 재사용성, 유지 보수성, 가독성을 향상시킵니다.

 (1) 상속 (Inheritance) : 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것입니다. 이를 통해 코드의 재사용성을 높이고 계층 구조를 형성할 수 있습니다.

   - extends (class 상속), implements (interface)

 (2) 캡슐화 (Encapsulation) : 객체의 속성과 메서드를 하나의 단위로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 것입니다. 이를 통해 데이터의 무결성을 유지할 수 있습니다.

 (3) 다형성 (Polymorphism) : 동일한 인터페이스를 사용하여 서로 다른 데이터 타입의 객체를 다룰 수 있는 능력입니다.

 (4) 클래스 (Class) : 객체를 생성하기 위한 청사진 또는 템플릿입니다. 클래스는 객체의 속성과 메서드를 정의합니다.

 

 

 

 

 

8. erp란? 전사적 자원 관리(enterprise resource planning) : HR, 제조, 공급망, 재무, 회계 등 성공적 기업 운영에 필요한 도구 및 프로세스 일체가 포함된 소프트웨어 시스템을 의미하는 표현입니다.

https://www.ecount.com/kr/ecount/trial/what-is-erp

 

ERP란 무엇인가?ㅣERP 기능 및 특징ㅣ이카운트

ERP(Enterprise Resource Planning) 시스템을 사용하면 기업의 모든 업무를 손쉽게 통합 관리할 수 있습니다.

www.ecount.com

 

 일반 회사에서 쓰는 업무들

   SAAP 같은 tool도 있다.

 

 

 

9. spring에서 dependency

 DI

 xml, annotation

 

 

 

10. 면접 책 p5 2. resp방식 -> 참고(oBootJpaApi)

 

11. VARCHAR와 CHAR의 차이

공통점: 둘 다 string으로

 - varchar: 크기가 고정이 안되어있다. -> blank가 반환된다. (용량을 줄일 수 있다.) -> 일반적으로 쓸 수 있다.

   varchar2: oracle에서 varchar2사용 나머지 DB에서는 varchar에서

 - char:  크기가 고정이 되어있다. -> blank로 남게된다.

 

 

 

 

12. inner join vs outer join

 (1) inner join : 

       emp와 dept table 사이 deptno가 foreignkey로 설정되어 있을 때

      1:N N인 쪽에서 걸어주어야 한다. 데이터가 누락이 될 수 있다.

 (2) outer join : 모든 내용이 다 나온다. (null값 포함)

 

  • LEFT OUTER JOIN (또는 LEFT JOIN):
    • 왼쪽 테이블의 모든 행을 포함하고, 오른쪽 테이블과 일치하지 않는 경우 NULL로 채워집니다.
    • 예시:
       
      SELECT * FROM TableA LEFT JOIN TableB ON TableA.id = TableB.a_id;
       
  • RIGHT OUTER JOIN (또는 RIGHT JOIN):
    • 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블과 일치하지 않는 경우 NULL로 채워집니다.
    • 예시:
      sql
      코드 복사
      SELECT * FROM TableA RIGHT JOIN TableB ON TableA.id = TableB.a_id;
       
  • FULL OUTER JOIN (또는 FULL JOIN):
    • 두 테이블의 모든 행을 포함하며, 일치하지 않는 경우 NULL로 채워집니다.
    • 예시:
      sql
      코드 복사
      SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.id = TableB.a_id;
SELECT * 
FROM TableA 
LEFT JOIN TableB ON TableA.id = TableB.a_id;

 

SELECT *
FROM TableA
RIGHT JOIN TableB ON TableA.id = TableB.a_id;
SELECT *
FROM TableA
FULL OUTER JOIN TableB ON TableA.id = TableB.a_id;

 

13. 프로그래머스 코딩테스트 해보기!! (lv 0-1정도 까지) JAVA, Oracle문제 풀어보기

https://school.programmers.co.kr/learn/challenges?order=acceptance_desc&levels=0&languages=java%2Cjavascript%2Coracle

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

오늘부터 매일 최소 한 문제씩 풀어보기!!!!

 

 

 

14. 원시타입 (Primitive Type) , 참조타입 (Reference Type)

 - 원시타입 (Primitive Type) : 원시 타입은 기본적인 데이터 유형으로, 직접 값을 저장합니다. 자바에서는 8개의 원시 타입이 있습니다

 

 - 참조타입 (Reference Type) : 참조 타입은 객체를 참조하는 데이터 유형으로, 실제 데이터는 메모리의 다른 위치에 저장됩니다. 참조 타입은 클래스, 배열, 인터페이스, 열거형 등이 포함됩니다.

 

 

15. delete vs truncate

공통점 : 둘 다 삭제하는 명령어

DELETE : DML 명령어 (rollback 가능)

 

TRUNCATE: DDL 명령어 (rollback이 불가능)

 

 

 

16. thread runnable

thread : 하나의 프로그램이 하나 이상의 독립적 서브 Task로 분리되어 실행될 때 각 서브Task를 Thread

 

 

17. spring을 어떻게 생각하는지

 

  • 의존성 주입 (Dependency Injection):
    • 객체 간의 의존 관계를 Spring이 관리해줍니다. 이를 통해 코드의 결합도를 낮추고, 테스트와 유지 보수가 용이해집니다.
  • 관점 지향 프로그래밍 (AOP):
    • 공통 관심사를 모듈화하여 코드의 재사용성을 높이고, 로깅, 보안, 트랜잭션 관리 등의 기능을 쉽게 구현할 수 있습니다.
  • 모듈화:
    • Spring은 여러 모듈로 구성되어 있어 필요한 기능만 선택하여 사용할 수 있습니다. 예를 들어, Spring MVC, Spring Data, Spring Security 등이 있습니다.
  • 트랜잭션 관리:
    • 선언적 트랜잭션 관리를 지원하여 데이터베이스 트랜잭션을 쉽게 처리할 수 있습니다.
  • 유연한 설정:
    • XML, 어노테이션, Java Config 등을 통해 유연하게 설정할 수 있습니다. 특히, 어노테이션 기반 설정은 코드의 가독성을 높여줍니다.

 

controller 가져오는 과정을 dispatcher servlet에 다 넣어놓았다. 훨씬 편리함

 

 

 

18. paging 처리 어떻게 하였는지?

서브 쿼리를 이용해서 rownum 뽑아서 처리했다.

- mysql에서는 limit라는 것을 이용해서 구현한다고 한다.

 

 

 

19. heap과 stack의 차이점

https://f-lab.kr/insight/stack-and-heap-differences

 

스택과 힙의 차이점 및 메모리 관리

스택과 힙의 기본 개념, 사용 사례, 메모리 관리의 중요성 및 최적화 방법에 대해 설명합니다.

f-lab.kr

https://junghyun100.github.io/%ED%9E%99-%EC%8A%A4%ED%83%9D%EC%B0%A8%EC%9D%B4%EC%A0%90/

 

스택(Stack)과 힙(Heap) 차이점

해당 Post는 스택(Stack)과 힙(Heap) 차이점를 정리한 파일이다.

junghyun100.github.io

https://helloworld-japan.tistory.com/33

 

기술 면접 힙과 스택의 차이는(heap & stack)?

안녕하세요 도쿄 정대리입니다. 오늘은 기술면접에서 자주 듣게 되는 질문인 힙과 스택의 차이에 대해서 이야기해보도록 하겠습니다. 힙과 스택에 대해서 어렴풋이 개념만 알고 있었다면 이번

helloworld-japan.tistory.com

 

 

스택은 후입선출(LIFO) 방식으로 작동하며, 함수 호출 시 지역 변수와 함수의 반환 주소가 스택에 저장됩니다. 이는 함수 호출이 끝나면 자동으로 메모리가 해제되는 구조입니다.

 

힙은 개발자가 직접 메모리를 할당하고 해제해야 하며, 메모리 누수와 같은 문제를 방지하기 위해 주의 깊게 관리해야 합니다.

 

동적 메모리는 해지를 해주어야 한다.

 

 

 

20. 네트워크 서버 계층 구조 (통신사 관련 협력사 같은 경우 물어볼 수 있음)

https://velog.io/@inyong_pang/OSI-7-%EA%B3%84%EC%B8%B5%EA%B3%BC-TCPIP-%EA%B3%84%EC%B8%B5

 

OSI 7 계층과 TCP/IP 계층

Open System Intercon-nection시스템 상호 연결에 있어 개방(열려있다, 표준)모델을 뜻한다실제 인터넷에서 사용되는 TCP/IP OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록단순하된

velog.io

https://velog.io/@yun8565/OSI-7%EA%B3%84%EC%B8%B5%EA%B3%BC-TCPIP-4%EA%B3%84%EC%B8%B5

 

OSI 7계층, TCP/IP 4계층 + TCP, UDP 정리

Open Systems Interconnection, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명하는 모델계층을 나누면 통신이 일어나는 과정을 단계별로 파악하기 쉽고 특정 계층에서 이상이 생기면

velog.io

ICMP  는 PING 같은 것

프로토콜: MAC, PPP, HDLC 

 

 

 

21. static

 

1. 정적 변수 (Static Variable)

  • 정의: 클래스에 속하는 변수로, 클래스의 모든 인스턴스가 공유합니다. 즉, 모든 객체가 동일한 값을 참조합니다.
  • 사용 예:
    java
    코드 복사
    class Counter { static int count = 0; // 정적 변수 Counter() { count++; // 객체가 생성될 때마다 count 증가 } } public class Main { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.count); // 출력: 2 } }

2. 정적 메서드 (Static Method)

  • 정의: 객체를 생성하지 않고도 호출할 수 있는 메서드로, 클래스에 속합니다. 정적 메서드는 정적 변수에만 접근할 수 있으며, 인스턴스 변수에는 접근할 수 없습니다.
  • 사용 예:
    java
    코드 복사
    class MathUtils { static int add(int a, int b) { return a + b; } } public class Main { public static void main(String[] args) { int result = MathUtils.add(5, 10); // 객체 생성 없이 호출 가능 System.out.println(result); // 출력: 15 } }

3. 정적 블록 (Static Block)

  • 정의: 클래스가 로드될 때 실행되는 코드 블록으로, 정적 변수의 초기화를 위해 사용됩니다.
  • 사용 예:
    java
    코드 복사
    class Example { static int value; static { value = 42; // 정적 블록에서 초기화 } } public class Main { public static void main(String[] args) { System.out.println(Example.value); // 출력: 42 } }

4. 정적 클래스 (Static Class)

  • 정의: 내부 클래스(Inner Class)에서만 사용할 수 있으며, 정적 클래스는 외부 클래스의 인스턴스에 접근할 수 없습니다.
  • 사용 예:
    java
    코드 복사
    class Outer { static class Inner { void display() { System.out.println("Hello from Inner class"); } } } public class Main { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); inner.display(); // 출력: Hello from Inner class } }

장점

  • 메모리 절약: 정적 변수와 메서드는 클래스가 메모리에 로드될 때 한 번만 생성되므로 메모리를 절약할 수 있습니다.
  • 유틸리티 메서드: 주로 유틸리티 클래스에서 사용되며, 객체 생성 없이 쉽게 접근할 수 있는 메서드를 제공합니다.

 

 

p10 배열부분 면접관련 문제 풀어보기

 

 

 

 

22. 동기식 비동기식 (아작스 설명하면서)

 

23. 절차적 언어 vs 비절차적 언어

절차적 언어(Procedural Language)

정의

  • 프로그래밍을 수행하는 일련의 절차(또는 단계)를 정의하는 언어입니다. 주로 명령어를 순차적으로 실행하여 결과를 도출합니다.

특징

  • 명령어 기반: 프로그래머가 수행할 작업을 구체적으로 지시합니다.
  • 함수 사용: 프로그램이 여러 개의 함수로 나뉘어 있으며, 함수는 특정 작업을 수행합니다.
  • 상태 변화: 프로그램의 상태를 변경하는 명령이 포함되어 있습니다.
  • 예시: C, Fortran, Pascal, BASIC 등.

장점

  • 명확한 흐름: 코드의 흐름이 명확하여 디버깅이 비교적 용이합니다.
  • 성능: 효율적인 메모리 관리와 성능을 제공할 수 있습니다.

단점

  • 유지보수의 어려움: 코드가 커질수록 관리와 수정이 어려워질 수 있습니다.
  • 재사용성 제한: 코드를 재사용하기 어려운 경우가 많습니다.

비절차적 언어(Non-procedural Language)

정의

  • 프로그래머가 어떤 작업을 수행할지를 기술하는 것이 아니라, 결과를 어떻게 얻을 것인지에 집중하는 언어입니다. 데이터의 조작이나 쿼리를 선언적으로 표현합니다.

특징

  • 결과 중심: 원하는 결과를 정의하고, 이를 얻기 위한 방법은 언어가 처리합니다.
  • 높은 추상화: 복잡한 세부사항을 숨기고, 높은 수준의 표현을 지원합니다.
  • 예시: SQL(Structured Query Language), Prolog, Haskell 등.

장점

  • 생산성 향상: 프로그래머가 복잡한 구현 세부사항을 신경 쓰지 않아도 되어 생산성이 높아집니다.
  • 유지보수 용이: 코드의 의도가 명확하여 유지보수가 쉽습니다.

단점

  • 성능: 추상화로 인해 성능이 떨어질 수 있으며, 최적화가 어려울 수 있습니다.
  • 학습 곡선: 비절차적 언어는 특정한 사고 방식을 요구하여 배우는 데 시간이 걸릴 수 있습니다.

 

 

 

 

 

24.

- order by : 정렬

- group by : group 별로 묶어서 통계를 내기 위함

group by 조건절 명령어 : having

 

 

 

25. framework과 library 차이점

framework : 개발환경들을 이미 구축해 놓은 것

library: 개발자가 자기가 필요한 것들을 jar나 war 형태로 뭉쳐놓은 것

 

 

26. 쿠키와 세션

쿠키 (Cookie)

정의

  • 쿠키는 클라이언트(브라우저) 측에 저장되는 작은 데이터 조각으로, 서버가 사용자 브라우저에 데이터를 저장하도록 요청할 수 있습니다.

특징

  • 저장 위치: 클라이언트의 브라우저에 저장됩니다.
  • 저장 용량: 보통 4KB까지 저장할 수 있습니다.
  • 유효 기간: 만료 날짜를 설정할 수 있으며, 설정된 기간이 지나면 자동으로 삭제됩니다. 만약 만료 날짜가 설정되지 않으면, 브라우저를 닫을 때 삭제됩니다.
  • 전송 방식: HTTP 요청을 보낼 때마다 쿠키가 자동으로 포함되어 전송됩니다.

용도

  • 사용자 로그인 상태 유지, 장바구니 데이터 저장, 사용자 선호 설정 등 다양한 정보를 클라이언트 측에서 저장할 때 사용됩니다.

세션 (Session)

정의

  • 세션은 서버 측에서 사용자 정보를 저장하는 방식으로, 사용자가 웹 애플리케이션에 접속할 때 서버가 생성합니다.

특징

  • 저장 위치: 서버의 메모리 또는 데이터베이스에 저장됩니다.
  • 저장 용량: 서버의 용량에 따라 다르며, 상대적으로 많은 데이터를 저장할 수 있습니다.
  • 유효 기간: 기본적으로 세션은 일정 시간 동안 활동이 없으면 만료됩니다. 보통 몇 분에서 몇 시간까지 설정할 수 있습니다.
  • 전송 방식: 세션 ID가 클라이언트의 쿠키 또는 URL 파라미터에 저장되어 서버와 클라이언트 간에 전달됩니다.

용도

  • 사용자 인증 상태 유지, 사용자 맞춤형 데이터 제공, 장기간의 사용자 상태 관리 등에서 사용됩니다.

쿠키와 세션의 주요 차이점

 

 

 

 

 

 

27. get 방식과 post 방식 : HTTP 프로토콜에서 클라이언트와 서버 간의 데이터 전송 방식으로 자주 사용되는 GETPOST 메서드가 있다.

 

이미지 -> post 방식

1. 데이터 전송 방식

  • GET:
    • 요청 데이터가 URL의 쿼리 문자열로 전송됩니다. 예를 들어: 
    • sql
      코드 복사
      GET /search?query=example HTTP/1.1
    • 데이터가 URL에 포함되어 있으므로, URL 길이 제한이 있습니다(대개 2048자).
  • POST:
    • 요청 데이터가 HTTP 요청 본문(Body)에 포함되어 전송됩니다. URL에 데이터가 나타나지 않으므로, 보다 큰 데이터를 전송할 수 있습니다.
    • 예를 들어:
      bash
      코드 복사
      POST /submit HTTP/1.1 Content-Type: application/x-www-form-urlencoded name=John&age=30

2. 데이터 보안

  • GET:
    • URL에 데이터가 포함되므로, 민감한 정보를 전송하기에 적합하지 않습니다. URL이 브라우저의 히스토리에 저장되고, 북마크할 수 있습니다.
  • POST:
    • 데이터가 요청 본문에 포함되어 노출되지 않으므로, 상대적으로 보안이 높습니다. 하지만 여전히 HTTPS와 같은 보안 프로토콜을 사용하는 것이 좋습니다.

3. 캐싱

  • GET:
    • 브라우저나 프록시 서버에서 캐시할 수 있습니다. 동일한 요청을 여러 번 보내는 경우, 서버에 요청하지 않고 캐시된 데이터를 사용할 수 있습니다.
  • POST:
    • 기본적으로 캐시되지 않으며, 브라우저가 요청을 다시 전송할 때 사용자에게 경고할 수 있습니다. 이는 데이터의 중복 전송을 방지하기 위함입니다.

4. 사용 용도

  • GET:
    • 데이터를 요청하는 데 적합합니다. 일반적으로 데이터를 조회할 때 사용됩니다. 예를 들어, 검색 쿼리나 특정 리소스를 요청할 때 사용합니다.
  • POST:
    • 데이터를 서버에 전송할 때 사용합니다. 주로 데이터 생성, 업데이트, 삭제와 같은 작업에 사용됩니다. 예를 들어, 폼 제출이나 파일 업로드 시 사용됩니다.

5. idempotency (멱등성)

  • GET:
    • 멱등성을 가집니다. 같은 GET 요청을 여러 번 수행해도 결과가 같고, 서버의 상태는 변경되지 않습니다.
  • POST:
    • 멱등성을 가지지 않습니다. 같은 POST 요청을 여러 번 수행하면 결과가 달라질 수 있습니다(예: 같은 주문을 두 번 제출하는 경우).

 

 

28. 프로세스 쓰레드

프로세스 내에서 실행되는 최소단위

프로세스 여러개 실행 multi 프로세스

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

 

 

29. string builder와 string buffer

https://velog.io/@heoseungyeon/StringBuilder%EC%99%80-StringBuffer%EB%8A%94-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80

 

StringBuilder와 StringBuffer는 무슨 차이가 있는가?

Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 Stri

velog.io

 

String

  • 불변성을 갖는다. → Immutable 하다.

StringBuilder, StringBuffer

  • 가변성을 갖는다. → mutable 하다.

stringBuilder는 동기화를 지원 (멀티스레드 환경에서도 안전하게 동작할 수 있다.)

stringBuffer는 동기와 지우너하지 않는다. 

 

 

30. 배열과 list 차이 : 데이터를 저장하고 관리하는 두 가지 중요한 데이터 구조입

 

배열 (Array)

정의

  • 배열은 동일한 데이터 타입의 요소들을 고정된 크기로 연속적으로 저장하는 데이터 구조입니다.

특징

  • 고정 크기: 배열을 선언할 때 크기를 정해야 하며, 한 번 정하면 변경할 수 없습니다.
  • 데이터 타입: 모든 요소는 같은 데이터 타입이어야 합니다.
  • 인덱스 접근: 배열의 각 요소는 인덱스를 통해 빠르게 접근할 수 있습니다(0부터 시작).
  • 메모리: 배열은 연속된 메모리 공간에 저장되어, 메모리 접근 속도가 빠릅니다.

예시 (자바)

java
코드 복사
int[] numbers = new int[5]; // 크기 5의 정수 배열 numbers[0] = 1; numbers[1] = 2; // ...

리스트 (List)

정의

  • 리스트는 데이터를 동적으로 저장할 수 있는 자료 구조로, 가변적인 크기를 갖습니다. 여러 가지 구현체가 있으며, 자바에서는 ArrayList, LinkedList 등이 있습니다.

특징

  • 가변 크기: 리스트는 요소를 추가하거나 제거할 수 있어 크기가 동적으로 변화합니다.
  • 데이터 타입: 다양한 데이터 타입을 저장할 수 있으며, 제네릭을 사용하면 특정 타입으로 제한할 수 있습니다.
  • 인덱스 접근: 리스트도 인덱스를 통해 접근할 수 있지만, 내부 구현에 따라 성능이 달라질 수 있습니다.
  • 추가/삭제: 요소 추가 및 삭제가 용이하지만, 배열보다 오버헤드가 발생할 수 있습니다.

예시 (자바)

java
코드 복사
import java.util.ArrayList; ArrayList<Integer> numbers = new ArrayList<>(); // ArrayList 생성 numbers.add(1); // 요소 추가 numbers.add(2); // ...

배열과 리스트의 주요 차이점

기준배열리스트

크기 고정 크기 가변 크기
데이터 타입 동일한 데이터 타입 다양한 데이터 타입 가능
메모리 구조 연속된 메모리 공간 비연속적 메모리 구조(리스트 구현에 따라 다름)
성능 요소 접근 속도가 빠름 요소 추가/삭제 시 성능이 달라질 수 있음
사용 용도 고정된 수의 데이터 저장 시 유용 데이터의 추가/삭제가 빈번한 경우 유용

 

 

제네릭과 컬렉션

 

 

 

 

 

 

31. 객체지향 기본 원리

객체지향 기본원리
- 객체지향 프로그램은 프로시저 함수 ) 추상화 와 data 추상화를 묶은 것

 

   
   
   
   
   

 

 

 

 

 

 

32. spring 3대 요소

 DI : annotation을 통해서 

AOP

Spring MVC

 

 

33. java vs javascript

1. java는 백엔드, javascript는 프론트 엔드

2. 둘  회사가 다르다.

 

 

 

 

34. 컬렉션

11번 강의자료

 

 

 

 

35. model이란?

dao랑 dbms 중간에 dml 처리하는 것 모아둔 것

 

 

36. Representational State Transfer Application Programming Interface restAPi가 무엇인가

 

- 내가 외부에 api를 제공하기 위해

 

37. spring framework: legacy

      spring boot: 현재 많이 사용되는 추세