728x90

java 23

Heap 영역과 GC(Garbage Collector) - JAVA

Heap Area 특징 자바에서의 heap 영역은 JVM 존재하는 Runtime Data Area 안에 존재한다. heap 영역은 new 연산자 등으로 생성된 객체(인스턴스)와 배열 등이 저장되는 영역이다. heqp 영역에 저장된 객체(인스턴스)나 배열은 다른 객체에서 참조 될 수 있다. GC(Garbage Collector)가 발생 하는 영역이며, 참조(레퍼런스)가 없는 객체들은 GC과정을 통해 메모리에서 제거 된다. 위의 그림과 같이 Heap 영역은 여러 여역으로 나뉘며 이는 객체의 LifeCycle 및 GC와 연관되어 있다. Heap 영역에 객체가 적재되는 방법 public class Main{ public static void main(String[] args){ int n = 10; String..

Study/JAVA 2021.05.10

내가 보려고 정리하는 신입 개발자 면접 질문 및 답변 - JAVA#1

질문들은 여기서 참고했어요 https://github.com/KimHunJin/Study-Book/tree/master/interview JVM구조에 대해 설명하시오. JVM이란 JAVA 컴파일러를 통해 JAVA source code(.java)에서 바이트 코드(.class)로 변환된것을 실행 할 수 있는 주체를 말합니다. JVM은 크게 Class Loader, Runtime Data Area, Executtion engine 세가지로 나뉩니다 첫번째로 Class Loader는 JAVA 컴파일러를 통해 생성된 바이트 코드들을 엮어서 JVM이 운영체제로 부터 할당받은 메모리 영역인 Runtime Data Area로 적제하는 역할을 합니다. 두번째로 Runtime Data Area는 자바 애플리케이션을 실행..

Study/면접 준비 2021.05.08

내가보려고 정리하는 신입 개발자 면접 준비 - JAVA

갱신중! JAVA의 장단점 장점 운영체제에 독립적이다 JVM에서 동작하기 때문에 특정 운영체제에 종속되지 않는다. 객체지향 언어이다 OOP를 위한 여러 언어적 지원을 하고있다. (캡슐화, 상속,추상화, 다형성 등등) 자동으로 메모리 관리를 해준다.(Gargage Collector) JVM에서 Garbage Collector라고 불리는 데몬 쓰레드에 의해 GC(Garbage Cllection)가 일어난다 GC로 인해 별도의 메모리 관리가 필요 없으며 비지니스 로직에 집중할 수 있다. 오픈소스이다 정확히는 OpenJDK가 오픈소스이다. OracleJDK는 사용 목적에 따라서 유료가 될 수 있다. 참고 : 구글과 Oracle의 자바전쟁 많은 JAVA 개발자가 존재하며 생태계가 잘 구축되어있다. 오픈소스 라이브..

Study/면접 준비 2021.05.06

[프로그래머스][JAVA] 괄호 회전하기

programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 기존에 존재하던 많은 올바른 괄호만들기 문제를 응용하는 문제였다 거기에 문자열 회전만 추가하는 문제로 문자열 회전은 앞의 문자를 하나 잘라내 뒤에 다시 붙혀넣는 식으로 풀었다 import java.util.Stack; class Solution { public int solution(String s) { int answer = 0; for(int i =0;i

[프로그래머스][JAVA] 가장 큰 수

programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 정렬 방법을 고민하느라 조금 헤맸던 문제이다 Comparator를 이용해 쉽게 풀수 있던 문제였다 전 배열과 현재 배열을 String 형태로 순서를 서로 바꿔 더해 더 큰 값이 앞으로 오도록 정렬하는 방식으로 풀었다 import java.util.*; class Solution { public String sol..

[프로그래머스][JAVA] 전화번호 목록

programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 해시 카테고리에 있었지만 해시문제인지는 잘 모르겠다 배열을 오름차순 정렬한다면 현재 위치 이전의 값이 접두어가 아니라면 그 외의 값들은 절대 접두어일 수 없다는 점을 이용하여 풀었다 import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; ..

[프로그래머스][JAVA] 튜플

programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 우선 들어온 값인 s를 길이가 짧은 집합 순으로 2차원 배열의 형태로 가공해줬다 그리고 배열을 순회 하며 이전 배열에는 없던 요소를 return 값에 추가하는 방식으로 풀어냈다 import java.util.*; class Solution { public int[] solution(String s) { s = s.substr..

[프로그래머스][JAVA] 카카오프렌즈 컬러링북

programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 동적 계획법으로 풀었다 방문 확인을 위해 picture배열과 같은 크기의 boolean 타입의 배열 visit 을 만들고 picture배열을 확인하며 0이 아니면서 위치의 visit 배열이 false일때 DP 함수를 돌렸다 DP함수에서는 상하좌우로 움직이며 방문 표시와 함께 총 넓이를 저장 해줬고 연산이 끝나면 기존에 있던 최대 넓이를 의미하는 변수인 maxCount와 Max 비..

[프로그래머스][JAVA] 더 맵게

programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 모든 scoville 배열의 값이 섞은 음식의 스코빌 지수 즉 K 값 이상이 되도록 했을때의 연산 횟수를 리턴하는 문제이다 당연히 스코빌 지수가 작은 값부터 연산을 진행 해야 하며 연산이 끝난 값도 다시 작은 값들과 연산을 진행 해야 한다 따라서..

[프로그래머스][JAVA] 타겟 넘버

programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 전형적인 완전 탐색 문제 DFS를 통해 풀었다 class Solution { public int solution(int[] numbers, int target) { return dfs(numbers,0,0,target); } public int dfs(int[] numbers,int index, int sum, int ta..

728x90