목록분류 전체보기 (73)
delpho
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CepxI/btrD8iP2P4y/vw1tb46SFkDYLtBAozRgyk/img.png)
1. 인터페이스와 추상클래스의 차이점에 대해 설명해주세요. # 추상 클래스 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스 상속을 위한 클래스이기때문에 객채 생성 불가! # 추상 클래스 규칙 추상 클래스는 키워드 abstract를 붙여 표현 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여서 추상 클래스로 지정할 수도 있음 클래스를 abstract로 지정하면 new를 통해 객체를 직접 생성할 수 없다. 메소드에 abstract를 사용할 경우 interface의 메소드와 같이 구현 부분은 없다. abstract로 선언한 메소드를 자식 클래스에서 반드시 구현해야 한다. (오버라이딩) 이는 자식 클래..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/WiETq/btrEeYvANFW/mRaDizgRgDDWPphyOOkR30/img.png)
1. JVM의 구조와 Java의 실행방식을 설명해주세요. # JVM ( Java Virtual Machine ) 자바와 운영체제 사이에서 중개자 역할을 수행 자바가 운영체제에 구애 받지 않고 프로그램을 실행할 수 있도록 도와줌 가비지 컬렉터를 사용한 메모리 관리도 자동으로 수행하며, 다른 하드웨어와 다르게 레지스터 기반이 아닌 스택 기반으로 동작 # 자바는 왜 JVM이 필요할까? Java 컴파일러는. java 파일을. class 파일로 컴파일한다. 이는. java 파일을 Java byte code로 변환하여. class 만드는 것인데 Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행이 되지 않는다. 이를 해결하기 위해 JVM을 통해 .class 파일을 로드/해석하여 Java 프로그램을 실행하..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2pLMT/btrDWiaHBZF/gHSkChjCQNNkaEI916kQnK/img.png)
1. Servlet Filter와 Spring Interceptor의 차이는 무엇인가요? # Filter 프론트에서 Dispatcher Sevlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능 DS는 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것임! 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너에 의해 관리가 되는 것이고(스프링 빈으로 등록은 된다), 디스패처 서블릿 전/후에 처리하는 것 필터를 추가하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements)해야 하며 이는 다음의 3가지 메소드를 가지고 있다. init 메소드 doFilter 메소드 destroy 메소드 ..
문제 자체는 어렵지 않았는데 어떤 방식으로 풀어야할지 고민했던 문제! 어떤 자료구조를 써야할지 고민했는데, 결국 다른 블로그를 참고했다. Map은 Key가 중복되서 put이 되면 마지막에 들어온 value가 저장되는 점을 활용했다. 여기서, key에 uid값을, value에는 닉네임을 저장한다! LinkedList를 이용하여 일단은 채팅로그를 그대로 남긴다. 그 후, LinkedList의 값을 하나씩 빼서 "님"의 idx값을 알아낸 후 그 앞의 uid를 얻어온다. 얻어온 uid값을 활용하여 Map에 있는 닉네임을 얻어와 닉네임을 변경한 후, answer에 idx를 증가시키며 저장! import java.util.*; class Solution { public String[] solution(String[..