왜 이런 단순한걸 묻는거지 구조를 묻는거지 의아했지만... 결코 쉽지 않았다
stack은 정적영역으로써 미리 할당된 친구들 컴파일시간에 지정하여 설정하였고 (LIFO)
heap은 대체적으로 크기의 가변이 있는 친구들이나 전역적으로 접근이 가능해야했고 난 스프링유저로써 GC를 언급했다.
+그렇다면 왜 heap은 정적인 친구들을 stack은 동적인 친구들을 받지 않는건가요..?
그렇다 여기서부터 뭔가 쌔함을 감지했다 stack은 단순히 포인트증가정도 heap은 포인트를 따라 찾아나서는 느낌으로 데이터를 찾는느낌으로 횡설수설했고
결론적으론 stack은 정해진 공간에 다른 함수가 의존적이면 변경이 매우 힘들거고..뭐 추가적으로 외부/내부 단편화를 언급해버렸다.
+외부/내부 단편화관련 질문
stack이 쌓일때 한칸씩 한칸씩 쌓이는데 그 한칸의 크기가 (4byte?)처럼 어느정도 OS에서 정해진 단위가 있을거고 그 최소 단위등을 표현하였고..
동적메모리는 미리 측정이 불가능하기에 파편화가 일어났으며.. 역시 백엔드 개발자라 그런지 GC에 관련하여 되물음이 돌아왔다.
사실 GC관련해선 young부분에서 뭐하는건 알고있었는데 //할당과 해제를 실행 ->데이터 파편화가 일어나고 --> 정렬이 일어나고 ---> 또 오래된건 처리하고 이런느낌으로 설명했고
결과적으로 오라클에서 heap영역을 2개로나눠 Compact 시켜서 메모리용량을 최적화시키는대신 좀 느릴것이다라고 마지막에 답변했다.
지금 면접리뷰도 사실 너무 의식의 흐름기법으로 적었지만 기초가 많이 약했던것같다.
대기업 면접에선 깊이를 찾아보지 못했지만 .. 서비스 기업의 면접은 대체적으로 원론적이며 흐름을 원하는것 같았다.
어디? - dc App
왜 이런 ㅈ 멍청한 질문을 하는거지? 그냥 스택과 힙은 설계 목적과 용도가 다른건데 왜? 저런 질문을 할까?
당연히 스택에서는 동적인 변수를 생성할 수 없는게 개발자가 원하는 타이밍에 생성 및 삭제할 수 있어야 동적인 변수라 할 수 있는데 스택은 설계된 목적과 용도가 다르기 때문에 당연히 할 수 없고, 힙은 스택에서 하지 못하는 역할을 하기 위해 필요한 영역인데
면접 질문 의도를 모르겠네 당연한거 아닌가? 그렇게 설계하고 만든건데
이건 마치 김대기 이름이 왜 김대기 인지 묻는거랑 동일함 엄마 아빠가 지었으니까 김대기지
당연한 질문이 아닙니다. 스택과 힙의 데이터 관리 방식이 왜 각각 정적/동적 데이터에 적합한지가 궁금하신것 뿐이죠
그 질문 자체가 멍청한 질문이라니까 스택과 힙을 설계할 때부터 이미 스택은 지역변수, 매겨변수, 정적인 변수들을 위한 공간으로 힙은 동적인 변수, 런타임에 크기를 결정하기 위한 공간으로 설계해서 만들었는데 왜 적합하냐 물으면 그렇게 만들었으니까 라고 대답할 수 밖에 없다는거지
차라리 질문을 힙은 무슨 무슨 원리때문에 동적인 변수(런타임 변수)에 적합하냐? 이렇게 질문하면 ㅇㅈ함
스프링이 멀티스레드 그 자체인데 heap관련해서 질문이 어떻게 멍청한 질문이라고 하는건지 이해가 안되네요 물론 전 GC관련해서 질문받았지만.. 추가적으로 멍청한 질문과 멍청하지 않은 질문의 판단은 면접관이 하시겟죠
그게 왜 당연함
어떤 원리나 과정 때문에 스택과 힙이 차이가 있는가를 묻는거잖아 a 씨 이름이 왜 a 씨예요? 라고 묻는 것도 누구는 당연히 부모가 그렇게 지었으니깐 그렇죠? 라고 말하는 사람도 있겠지만, 누군가는 뭐 절에서 이름을 받았다. 교회 사람이라서 그렇게 했다 등등 과정을 말하는 사람들이 있음.
ㅇㅇ 아닌 유동 말은 그냥 걸러들어요 ㅋㅋ 괜히 피곤해짐
이 냄새는 게임쪽인데 - dc App
자료구조와 밀접한 이유가 가장 크다고 생각합니당. 스택은 주로 지역변수나 메서드와 관련된 데이터를 저장하는데, 이는 계층 구조로써 가장 윗 스택부터 처리가 완료되면 반납하는 것이 적절하기 때문에 스택을 사용합니당. 이 때문에 동적인 데이터를 적재하는덴 적절하진 않는걸로 알고있어용 힙은 말씀하신대로 구용 제가 봤을땐 아쉬운건 정확히 모르는건 해당 부분에 대해 모르는걸 말씀드리고 추론으로 갔으면 어땠을까 싶어요. 아는 부분까지만 말씀하셨어도 충분하셨을거 같은데 아쉽네요
저런 면접관 한테 "스택 없이 할당 하나하나 해서 앱 돌려볼래요 시발럼아?" 이래보고 싶네.
그냥 조금만 생각해보면 답이 나옴. 힙 영역에 들어갈걸 스택에 넣기 시작하면 같은 내용을 윗뚜껑으로 계속 할당해야 함.
반대로 스택 영역의 내용을 힙 내용에 넣으면, 일의 순서를 메모리 할당하듯이 해야함. 그 얼마나 좆같냐...
저런 질문 받으면 스택 없이 할당 하나하나 해서 앱 돌려본다고 생각보면 참 즐겁네요 ^^ 반대로 힙 없이 하나하나 재할당 하면서 뚜껑 쌓으면 램 참 효율 좋게 써지겠죠?
Context switching 비용 줄이려고