[์šด์˜์ฒด์ œ] ๋ฉ”๋ชจ๋ฆฌ

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ 

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ž€?

๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋Š” CPU๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ ค๋ฉด ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์ด ๋ณต์‚ฌ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€์•ผ ํ•จ, ์ด๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ ํ•œ๋‹ค 
CPU๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”๊ตฌํ•จ 

MMU

MMU(๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์žฅ์น˜)๋ž€? 

MMU

  1. MMU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์คŒ 
  2. ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๋‚˜ ์บ์‹œ ๊ด€๋ฆฌ ๋“ฑ CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ํ•˜๋“œ์›จ์–ด 
  3. ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์ด ํ•œ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š” ๋“ฏ์ด ์†์ด๊ธฐ ์œ„ํ•ด '๊ฐ€์ƒ ์ฃผ์†Œ'๋ผ๋Š” ๊ฐœ๋…์ด ๋“ฑ์žฅํ•˜์˜€์Œ 
  4. ์ด ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ์‹ค์ œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™˜์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ฅผ MMU๊ฐ€ ๋„์™€์คŒ 

MMU์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ 

  1. ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ณต๊ฐ„์„ ์นจ๋ฒ”ํ•ด์„œ๋Š” ์•ˆ๋จ 
  2. ๋”ฐ๋ผ์„œ ํ•œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ฃผ์†Œ ์˜์—ญ์„ ์„ค์ •ํ•˜๊ณ , ์ž˜๋ชป๋œ ์ ‘๊ทผ์ด ์˜ค๋ฉด ์ด๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•จ
์ฐธ๊ณ ) base์™€ limit ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ๊ธฐ๋ฒ• 
base ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ์ €์žฅํ•˜๊ณ , limit ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ €์žฅ
base <= x < base + limit ์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ถ€์—ฌํ•จ 

๋ฉ”๋ชจ๋ฆฌ ๊ณผํ• ๋‹น(over allocating)

๋ฉ”๋ชจ๋ฆฌ ๊ณผํ• ๋‹น์ด๋ž€?

์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ๋” ํฐ ์‚ฌ์ด์ฆˆ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•œ ์ƒํ™ฉ 
ํŽ˜์ด์ง• ๊ธฐ๋ฒ•๊ณผ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์€ ์‚ฌ์šฉ์ž๊ฐ€ ํฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๋ผ๋„๋ก ๋ˆˆ์†์ž„์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์คŒ
์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฒ•

 

๊ณผํ• ๋‹น ์ƒํ™ฉ์—๋Š” ์ด๋Ÿฌํ•œ ๋ˆˆ์†์ž„ ๊ณผ์ •์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋“คํ‚ฌ ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค.

  1. ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ
  2. ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŽ˜์ด์ง€ ์œ„์น˜๋ฅผ ๋””์Šคํฌ์—์„œ Search 
  3. ๋นˆ ํ”„๋ ˆ์ž„์ด ์—†์Œ 

=> ๋นˆ ํ”„๋ ˆ์ž„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด swapping ๊ธฐ๋ฒ• ํ™œ์šฉ. 

 

ํŽ˜์ด์ง€ ๊ต์ฒด

ํŽ˜์ด์ง€ ๊ต์ฒด๋ž€?

swapping ๊ธฐ๋ฒ•์—์„œ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ swap outํ•ด์„œ ๋นˆ ํ”„๋ ˆ์ž„์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ

swapping ๊ธฐ๋ฒ• ๊ณผ์ • 

  1. ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ
  2. ํŽ˜์ด์ง€ ํดํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ํŽ˜์ด์ง€ ์œ„์น˜๋ฅผ ๋””์Šคํฌ์—์„œ Search
  3. ๋ฉ”๋ชจ๋ฆฌ์— ๋นˆ ํ”„๋ ˆ์ž„์ด ์žˆ๋Š” ํ™•์ธ
  4. ๋งŒ์•ฝ ๋นˆ ํ”„๋ ˆ์ž„์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ํ”„๋ ˆ์ž„์„ ์‚ฌ์šฉ 
  5. ๋นˆ ํ”„๋ ˆ์ž„์ด ์—†์œผ๋ฉด, ํฌ์ƒ ํ”„๋ ˆ์ž„์„ ์„ ์ •ํ•ด ๋””์Šคํฌ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•˜๊ณ  ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธ
  6. ๋นˆ ํ”„๋ ˆ์ž„์— ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํŽ˜์ด์ง€๋ฅผ ์˜ฌ๋ฆฌ๊ณ , ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ

์ด๋•Œ ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ์ผ์–ด๋‚˜๋„, ์‚ฌ์šฉ์ž๊ฐ€ ๋ชป๋Š๋ผ๋„๋ก ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฌธ์ œ ์—†์ด ๊ณ„์† ์ˆ˜ํ–‰์‹œ์ผœ์•ผ ํ•จ => ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฐ์†Œ ์‹œ์ผœ์•ผ ํ•จ!

๋นˆ ํ”„๋ ˆ์ž„์ด ์—†๋Š” ์ƒํ™ฉ์—์„œ ํฌ์ƒ ํ”„๋ ˆ์ž„์„ ๋น„์šธ ๋•Œ์™€ ์›ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํ•ด๋‹น ํ”„๋ ˆ์ž„์œผ๋กœ ์˜ฌ๋ฆด ๋•Œ ์ด ๋‘ ๋ฒˆ์˜ ๋””์Šคํฌ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง 

๋งŒ์•ฝ, ํŽ˜์ด์ง€ ๊ต์ฒด๊ฐ€ ๋งŽ์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ  

์•„์˜ˆ ์ ‘๊ทผํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ด์ž! 

  1. swapping ๊ณผ์ •์—์„œ ์ด ๋‘ ๋ฒˆ์˜ ๋””์Šคํฌ ์ ‘๊ทผ์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?
  2. ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋‚ด์šฉ์˜ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ ๋น„ํŠธ๋ฅผ ๋‘์ž! ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ์— ํฌ์ƒ ํŽ˜์ด์ง€๊ฐ€ ์ •ํ•ด์ง„๋‹ค๋ฉด ๊ทธ ๋ณ€๊ฒฝ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•˜์ž 
  3. ๋งŒ์•ฝ ๊ทธ ๋น„ํŠธ๊ฐ€ set ์ƒํƒœ๋ผ๋ฉด, ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์กŒ์œผ๋ฏ€๋กœ ๋””์Šคํฌ์— ๊ธฐ๋กํ•ด์•ผํ•œ๋‹ค!
  4. ๋งŒ์•ฝ ๊ทธ ๋น„ํŠธ๊ฐ€ clear ์ƒํƒœ๋ผ๋ฉด, ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์ง€์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค! 

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ! 

  1. ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž˜ ์„ ํƒํ•œ๋‹ค๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํ™•์‹คํžˆ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. 
  2. ์ฆ‰, ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ํŽ˜์ด์ง€ ํดํŠธ ํ™•๋ฅ  ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด์•ผ๋งŒ ํ•œ๋‹ค.
  3. FIFO, OPT, LRU

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ

์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ž€?

์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ๋‚ด์šฉ์˜ ์ผ๋ถ€๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๊ธฐ์–ต์žฅ์น˜ 
CPU์™€ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ ๊ฐ„์˜ ์„ฑ๋Šฅ ์ฐจ์ด์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋Œ€์•ˆ 
๋งŒ์•ฝ CPU๊ฐ€ ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ ๋‹ค์‹œ ์žฌ์ ‘๊ทผ์„ ํ• ๋•Œ, ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋†จ๋‹ค๋ฉด ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†์Œ 

์บ์‹ฑ ๊ณผ์ • 

  1. CPU์—์„œ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ, ํ•ด๋‹น ๋ช…๋ น์ด ์บ์‹œ ๊ธฐ์–ต์žฅ์น˜์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ 
  2. ์กด์žฌํ•˜๋ฉด Hit!, ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ CPU์—๊ฒŒ ์ „๋‹ฌ 
  3. ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด Miss! 
  4. ์ฃผ๊ธฐ์–ต์žฅ์น˜๋กœ ์ ‘๊ทผ 
  5. ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ธ์ถœ
  6. ํ•ด๋‹น ๋ช…๋ น์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ์ €์žฅ
  7. ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ CPU๋กœ ์ „์†ก 

์บ์‹œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋น„์šฉ์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ์ ์ค‘๋ฅ ์„ ๊ทน๋Œ€ํ™” ํ•ด์•ผํ•จ! 

์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ

์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ 

  1. ๊ธฐ์–ต ์žฅ์น˜ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์–ด๋– ํ•œ ์ˆœ๊ฐ„์— ํŠน์ •ํ•œ ๋ถ€๋ถ„์„ ์ง‘์ค‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ํŠน์„ฑ
  2. ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ : ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์€ ๊ณง ๋‹ค์Œ์—๋„ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ 
  3. ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ : ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐธ์กฐ๋œ ์ฃผ์†Œ์™€ ์ธ์ ‘ํ•œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์ด ๋‹ค์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ 

์บ์‹ฑ ๋ผ์ธ 

  1. ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ฃผ์†Œ์— ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด ์ผ์ผํžˆ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ 
  2. ๋”ฐ๋ผ์„œ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ•จ๊ป˜ ์ €์žฅ 
  3. ์ฆ‰, map ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ฐ™์ด ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•จ

 

 

Reference

https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-12.-%EC%A3%BC%EA%B8%B0%EC%96%B5%EC%9E%A5%EC%B9%98%EA%B4%80%EB%A6%AC

 

[์šด์˜์ฒด์ œ(OS)] 12. ์ฃผ๊ธฐ์–ต์žฅ์น˜๊ด€๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ๋Š” CPU ์ž์›๋งŒํผ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋งค์šฐ ์ค‘์š”ํ•œ ์ž์› ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ด์ „์—๋Š” ์šด์˜์ฒด์ œ์—์„œ CPU ์ž์›์„ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜๊ณ , ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ํŠนํžˆ, ๊ณผ๊ฑฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งค์šฐ ๋น„์‹ผ ์ž์›์ด์—ˆ๊ณ  ํฌ๊ธฐ ๋˜ํ•œ ์ž‘์•˜๊ธฐ ๋•Œ๋ฌธ์—, ์šด์˜์ฒด์ œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๊ฐ€ ์ง€๊ธˆ๋ณด๋‹ค ๋” ์ค‘์š”ํ•˜์˜€๋‹ค. ํ˜„์žฌ์—...

velog.io

https://github.com/gyoogle/tech-interview-for-developer

 

gyoogle/tech-interview-for-developer

๐Ÿ‘ถ๐Ÿป ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „ ๐Ÿ“–. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com