[Powered by Google Translate] [সেমিনার: কারিগরী সাক্ষাতকার] [Kenny Yu, হার্ভার্ড বিশ্ববিদ্যালয়] [এটি CS50.] [CS50.TV] হাই সবাই, আমি Kenny. আমি বর্তমানে একজন জুনিয়র অধ্যয়নরত কম্পিউটার বিজ্ঞান. আমি একজন প্রাক্তন সি এস TF, এবং আমি এই আমি ইচ্ছা করে যখন আমি একটি underclassman, এবং সে জন্যই আমি এই সেমিনার প্রদান করছি. তাই আমি আশা করি আপনি তা ভোগ. এই সেমিনার প্রযুক্তিগত সাক্ষাত্কার হয়, এবং আমার সব সম্পদ এই লিঙ্ক পাওয়া যাবে, এই লিঙ্কটি এখানে ডান, সম্পদের একটি দম্পতি. তাই আমি সমস্যার একটি তালিকা তৈরি করেছেন আসলে, বেশ কিছু সমস্যা. এছাড়াও একটি পাতা যেখানে আমরা সাধারণ সম্পদ টিপস পেতে পারেন কিভাবে একটি সাক্ষাতকারের জন্য প্রস্তুতি, আপনি কি সত্যিই একটি সাক্ষাতকারের সময় কি করা উচিত টিপস, সেইসাথে কিভাবে সমস্যা ভবিষ্যতে উল্লেখের জন্য এবং সম্পদ কাছে. এটা সকল অনলাইন. এবং শুধুমাত্র এই সেমিনার, একটি দাবিত্যাগ কথামুখ যাও, আপনার ইন্টারভিউ প্রস্তুতি - ভালো না করা উচিত এই তালিকা সীমাবদ্ধ করা উচিত নয়. এটি কেবলমাত্র একটি গাইড হতে বোঝানো, এবং আপনি স্পষ্টভাবে সবকিছু আমি লবণ দিয়ে একটি গ্রেইন বলে নিতে হবে, কিন্তু সবকিছু আমি আপনার ইন্টারভিউ প্রস্তুতি আপনাকে সাহায্য করার জন্য ব্যবহার. আমি পরবর্তী কয়েক স্লাইড মাধ্যমে করছি গতি বাড়াতে যাচ্ছে যাতে আমরা প্রকৃত ক্ষেত্রে গবেষণা করতে পারেন. একটি সফটওয়্যার ইঞ্জিনিয়ারিং postion জন্য একটি সাক্ষাৎকারের গঠন, সাধারণত এটি 30 থেকে 45 মিনিট, একাধিক চক্রের, কোম্পানির উপর নির্ভর করে. প্রায়ই আপনাকে একটি সাদা বোর্ডে করব কোডিং করা হবে. তাই একটি ভালো লেগেছে, কিন্তু প্রায়ই একটি ছোট স্কেলে সাদা বোর্ড. যদি আপনি একটি ফোন ইন্টারভিউ হচ্ছে, সম্ভবত আপনি পাবেন ব্যবহার করা হবে collabedit হয় বা কোন Google Doc যাতে তারা আপনি সরাসরি কোডিং দেখতে পারেন যখন আপনি ফোনের মাধ্যমে করা হচ্ছে করছি সাক্ষাতকার. একটি সাক্ষাত্কারে নিজেই সাধারণত 2 অথবা 3 সমস্যা আপনার কম্পিউটার বিজ্ঞান জ্ঞান পরীক্ষা. এবং এটা প্রায় নিশ্চিতভাবে কোডিং জড়িত করা হবে. প্রশ্নের ধরন যে আপনি দেখতে পাবেন সাধারণত ডাটা স্ট্রাকচার এবং এলগোরিদম নেই. এবং সমস্যার মধ্যে এই ধরনের কাজ, তারা আপনাকে জিজ্ঞাসা, পছন্দ হবে, কি সময় এবং স্থান জটিলতা, বড় হে? প্রায়ই তারা উচ্চ স্তরের প্রশ্ন জিজ্ঞাসা করতে পারেন, সুতরাং, একটি সিস্টেম নকশা, কিভাবে আপনি আপনার lay কোড যাবে? কি ইন্টারফেস, কি ক্লাস মডিউল কি, আপনি আপনার সিস্টেমের মধ্যে নেই, এবং কিভাবে এই না ইন্টারঅ্যাক্ট একসঙ্গে? তাই ডাটা স্ট্রাকচার এবং আলগোরিদিম হিসেবে নকশা সিস্টেম. কিছু সাধারণ টিপস আগে আমরা আমাদের ক্ষেত্রে গবেষনার জন্য আকর্ষণীয়. আমি মনে করি সবচেয়ে গুরুত্বপূর্ণ নিয়ম সর্বদা চিন্তা অট্ট আউট করা হবে. আপনার ইন্টারভিউ সুযোগ আপনার চিন্তা প্রক্রিয়া দেখাতে হবে অনুমিত হয়. সাক্ষাতকারের পয়েন্ট জন্য সাক্ষাত্কার মূল্যাবধারণ করা যাও কিভাবে আপনি কি মনে করেন এবং কিভাবে আপনি একটি সমস্যার মধ্য দিয়ে যেতে হবে. সবচেয়ে খারাপ জিনিস আপনি কি করতে পারেন পুরো ইন্টারভিউ সর্বত্র নীরব থাকা. এটা ঠিক কোন ভাল. আপনি যখন একটি প্রশ্ন করা হয়, তবে আপনাকে নিশ্চিত করুন যে আপনি বুঝতে প্রশ্ন করতে চাই. সুতরাং প্রশ্নটি পুনরাবৃত্তি ফিরে আপনার নিজের ভাষায় এবং প্রচেষ্টা পুঙ্খানুপুঙ্খ কয়েকটি সহজ পরীক্ষার বিষয় কাজ নিশ্চিত আপনি প্রশ্ন বুঝতে না. কয়েক পরীক্ষার বিষয় মাধ্যমে কাজ দিতে এছাড়াও কিভাবে এই সমস্যা সমাধানের উপর একটি সংস্কার করা হয়. আপনি এমন কি কয়েক নিদর্শন আপনার সমস্যা সমাধানে সাহায্য আবিষ্কার করতে হতে পারে. তাদের বড় টিপ নয় হতাশ যাও পেতে. হতাশ না হয়ে যায়. সাক্ষাতকার হয় চ্যালেঞ্জিং, কিন্তু সবচেয়ে খারাপ জিনিস আপনি কি করতে পারেন, হচ্ছে নীরব ছাড়াও, হল সুস্পষ্টভাবে হতাশ করা হবে. আপনি একটি সাক্ষাত্কার যে ছাপ দিতে না চান. একটা জিনিষ যে আপনি - তাই, অনেক মানুষ, যখন তারা একটি সাক্ষাত্কারে ঢোকা, তারা প্রথম সেরা সমাধান খুঁজতে চেষ্টা করার প্রচেষ্টা, যখন সত্যিই, এর সাধারনতঃ উজ্জ্বলরূপে সুস্পষ্ট সমাধান. এটা ধীর হতে পারে, এটা অদক্ষ হতে পারে, কিন্তু আপনি এটা উচিত রাষ্ট্র হতে পারে, ঠিক তাই আপনি একটি ভাল কাজ শুরু থেকে বিন্দু আছে. এছাড়াও, প্রতি নির্দেশ সমাধান আউট হয় পদ মধ্যে ধীর, বড় হে সময় জটিলতা বা স্থান জটিলতা, সাক্ষাত্কার যে আপনি বুঝতে প্রদর্শন করা হবে এই সমস্যাগুলি কোড লেখা. সুতরাং সরলতম আলগোরিদিম চিন্তা প্রথম ভীত না করা এবং তারপর সেখান থেকে ভালো কাজ. কোন প্রশ্ন এতদূর? ঠিক আছে. তাই আমাদের প্রথম সমস্যা let এর মধ্যে আকর্ষণীয়. "এন পূর্ণসংখ্যার একটি শ্রেণীবিন্যাস দেওয়া, একটি ফাংশন যে অ্যারের shuffles লিখুন স্থান অনুযায়ী n পূর্ণসংখ্যার সব permutations সমান সম্ভাবনা থাকে. " অনুমান এবং আপনি উপলব্ধ একটি র্যান্ডম পূর্ণসংখ্যা জেনারেটর আছে যে 0 থেকে আমি একটি সীমার মধ্যে একটি পূর্ণসংখ্যা উত্পন্ন, অর্ধেক পরিসীমা. সবাই কি এই প্রশ্ন বুঝতে? আমি আপনি n পূর্ণসংখ্যার একটি শ্রেণীবিন্যাস দিতে, এবং আমি আপনি তা রদবদল. আমার ডিরেক্টরির মধ্যে, আমি কি আমি বলতে চাচ্ছি প্রকট কয়েক প্রোগ্রাম লেখেন. আমি 20 উপাদানের একটি অ্যারের রাখা যাচ্ছে না, থেকে -10 যাও +9, এবং আমি আপনাকে ভালো একটি তালিকা আউটপুট চান. তাই এই হল আমার সাজানো ইনপুট অ্যারের, এবং আমি আপনি তা রদবদল. আমরা এটিকে আবার চেষ্টা করবো. কি সবাই বুঝতে প্রশ্ন? ঠিক আছে. সুতরাং আপনার উপর. কিছু ধারনা কি? N ^ 2, n log n, n হিসাবে আপনি এটি করতে পারেন? পরামর্শ যাও খুলুন. ঠিক আছে. সুতরাং একটি ধারণা, এমি প্রস্তাব, প্রথম থেকে 0 20 একটা র্যান্ডম সংখ্যা, র্যান্ডম পূর্ণসংখ্যা, একটি পরিসীমা গনা. তাই অনুমান করা আমাদের একটি অ্যারের 20 দ্বারা হয়েছে. ইন 20 উপাদানের আমাদের ডায়াগ্রাম, এই হল আমাদের ইনপুট অ্যারের. এবং এখন, তার পরামর্শ একটি নতুন অ্যারে নির্মাণ করা হয়, তাই এই অ্যারে আউটপুট হবে. তোমার র্যান্ড্ দ্বারা ফিরে উপর ভিত্তি করে - তাই যদি তোমার ছিল, এর কথা বলা যাক, 17, প্রথম অবস্থান মধ্যে 17 কপি উপাদান. এখন আমরা মোছার প্রয়োজন হবে - আমরা এখানে সব উপাদানের প্রয়োজন নামান উপর যাতে আমরা শেষে একটি ফাঁক এবং মধ্যম কোন ছিদ্র আছে. এবং এখন আমরা প্রক্রিয়ার পুনরাবৃত্তি. এখন আমরা একটি নতুন 0 এবং 19 এর মধ্যে র্যান্ডম পূর্ণসংখ্যা বাছাই. আমরা একটি নতুন আমি এখানে আছে, এবং আমরা এই স্থান মধ্যে এই উপাদান কপি. তারপর আমরা উপর আইটেম এবং নামান আমরা প্রক্রিয়ার পুনরাবৃত্তি না হওয়া পর্যন্ত আমরা আমাদের সম্পূর্ণ নতুন অ্যারে আছে. এই আলগোরিদিমের চালানোর সময় কি? ওয়েল, আমি কি এই প্রভাব বিবেচনা. আমরা প্রতি উপাদান হয় নাড়াচাড়া. যখন আমরা তোমার মুছে ফেলার জন্য এই, আমরা এটি পরে সব উপাদান হয় নড়ন বাম যাও. এবং এটা একটা হে (ঢ) খরচ কারণ কি যদি আমরা প্রথম উপাদান সরাবেন? তাই প্রতিটি অপসারণের জন্য, আমরা মুছে ফেলার জন্য - প্রতিটি অপসারণ একটি হে (ঢ) অপারেশন incurs, এবং যেহেতু আমরা সরানো n আছে, এই একটি হে (ঢ ^ 2) অদলবদল বাড়ে. ঠিক আছে. তাই শুভ সূচনা. ভাল শুরু. অন্য কিছু পরামর্শ Knuth পরিহার হিসাবে পরিচিত ব্যবহার হয়, বা জাতীয় ইয়েটস অদলবদল. এবং এটি প্রকৃত একটি রৈখিক সময় অদলবদল. এবং ধারণা খুবই অনুরূপ. আবার, আমরা আমাদের ইনপুট অ্যারের আছে, কিন্তু পরিবর্তে আমাদের ইনপুট / আউটপুটের জন্য দুটি অ্যারে ব্যবহার করে, আমরা আমাদের shuffled অংশ ট্র্যাক রাখতে অ্যারের প্রথম অংশ ব্যবহার, এবং আমরা ট্র্যাক রাখা এবং তারপর আমরা unshuffled অংশ জন্য আমাদের অ্যারের বিশ্রাম ছেড়ে. সুতরাং তা এখানে আমি বলতে চাচ্ছি. আমরা যা দিয়ে শুরু করা বন্ধ করে - আমরা একটি তোমার চয়ন, 0 থেকে 20 তে একটি অ্যারে. আমাদের বর্তমান পয়েন্টার প্রথম সূচক যাও প্রতি নির্দেশ করা হয়. আমরা তোমার এখানে চয়ন করুন এবং এখন আমরা অদলবদল. তাই আপনি যদি এই ছিল 5 এবং এই ছিল 4, ফলে অ্যারের 5 এখানে এবং এখানে আছে 4 হবে. এবং এখন আমরা একটি চিহ্নিতকারী এখানে রাখবেন. বাম সবকিছু shuffled হয়, এবং ডান সবকিছু unshuffled হয়. এবং এখন আমরা প্রক্রিয়ার পুনরাবৃত্তি করতে পারেন. আমরা একটি 1 এবং 20 এর মধ্যে এখন র্যান্ডম সূচক চয়ন. তাই আমাদের নতুন অনুমান তোমার এখানে. এখন আমরা আমাদের বর্তমান নতুন অবস্থান সঙ্গে এখানে এই তোমার অদলবদল. সুতরাং আমরা একটি ভালো না সোয়াপিং পিছনে. আমাকে এটা আরো জমাটবদ্ধ করা কোড আসা. আমরা তোমার সাথে শুরু আমাদের পছন্দ - আমরা শুরু সঙ্গে তোমার 0 সমান, আমরা একটি র্যান্ডম অবস্থান ঞ বাছাই অ্যারের মধ্যে unshuffled অংশ, তোমার n-1. সুতরাং যদি আমি এখানে আছি, এখানে একটি এবং অ্যারের মধ্যে অবশিষ্ট রেন্ডোম সূচক চয়ন, এবং আমরা অদলবদল. এই সব কোড আপনার প্রয়োজনীয় অ্যারের পরিহার যাও. কোন প্রশ্ন? আচ্ছা, একটা প্রশ্নের উত্তর প্রয়োজন হয়, কেন হয় এই সঠিক? কেন প্রত্যেক বিনিময় সমানভাবে আগ্রহী? এবং আমি এই প্রমাণ দিয়ে যেতে হবে না, কিন্তু কম্পিউটার বিজ্ঞানের বহু সমস্যা আনয়ন মাধ্যমে প্রমাণিত. কিভাবে আপনি অনেক আনয়ন সাথে পরিচিত? ঠিক আছে. কুল. সুতরাং আপনি এই অ্যালগরিদম সহজ আনয়ন দ্বারা শুদ্ধতা প্রমাণ করতে পারেন, যেখানে আপনার আনয়ন অনুমান করা যায়, যে অনুমান আমার পরিহার প্রতি সমানভাবে বিনিময় সম্ভবত ফেরত্ আপ যাও তোমার প্রথম উপাদান. এখন, আমি + 1 টি বিবেচনা. প্রসঙ্গক্রমে এবং আমরা আমাদের সূচক ঞ swap নির্বাচন করুন, এই দেয় - এবং তারপর আপনি বিবরণ কাজ আউট, অন্তত একটি কেন এই অ্যালগরিদম ফেরৎ পূর্ণ প্রমাণ সম্ভবত প্রতি সমানভাবে সম্ভাবনা বিন্যাস. সমস্ত অধিকার, পরের সমস্যা. সুতরাং "পূর্ণসংখ্যার একটি শ্রেণীবিন্যাস, postive, শূন্য, নেতিবাচক দেওয়া, একটি ফাংশন যে সর্বাধিক যোগফল হিসাব লিখুন কোনো ইনপুট অ্যারের continueous subarray. " এখানে একটি উদাহরণ ক্ষেত্রে যেখানে সব সংখ্যার ইতিবাচক হয়,, তারপর বর্তমানে সেরা পছন্দ পুরো অ্যারের নিতে হয়. 1, 2, 3, 4, 10 সমান. আপনি যখন কোন কিছু নেগেটিভ আছে, এই ক্ষেত্রে আমরা প্রথম দুটি করতে চান কারণ -1 এবং / অথবা -3 নির্বাচন করে আমাদের সমষ্টি নিচে আনা হবে. কখনও কখনও আমরা অ্যারে মাঝখানে শুরু করতে পারে. কখনও কখনও আমরা কিছুই চয়ন করতে চান; এটি সেরা কিছু না. এবং কখনও কখনও এটা ভাল পড়া নিতে, কারণ এটি পরে জিনিষ সুপার বড়. সুতরাং কোনো ধারনা? (ছাত্র, অপাচ্য) >> হ্যাঁ. ধরুন আমি -1 না নিতে. তারপর আমি হয় এবং 1,000 20,000 চয়ন, অথবা আমি 3 বিলিয়ন চয়ন. ভাল, ভাল চয়েস সব নম্বর নিতে হয়. এই -1, সত্ত্বেও হচ্ছে নেতিবাচক, সম্পূর্ণ সমষ্টি ভাল চেয়ে ছিল আমি -1 না নিতে. সুতরাং টিপস আমি আগে উল্লেখ করেছে এক পরিষ্কারভাবে সুস্পষ্ট রাষ্ট্র ছিল পাশব বল প্রথম এবং সমাধান. নরপশু এই সমস্যা বলবৎ সমাধান কি? হাঁ? [জেন] ওয়েল, আমি মনে করি পাশব বল সমাধান সমস্ত সম্ভাব্য সমাহার (দুর্বোধ্য) যুক্ত করা হবে. [Yu] ঠিক আছে. সুতরাং ধারণা Jane এর প্রতি সম্ভব নিতে হয় - আমি paraphrasing - প্রতি সম্ভব একটানা subarray নিতে হয়, এর সমষ্টি, তারপর গণনা করা এবং সম্ভব সমস্ত একটানা subarrays সর্বাধিক নিতে. আমার ইনপুট অ্যারের মধ্যে একটি স্বতন্ত্র কি subarray চিহ্নিত? ভালো লেগেছে, কি দুটি জিনিস দরকার হবে? হাঁ? (ছাত্র, অপাচ্য) >> রাইট. একটি সূচক এবং একটি ঊর্ধ্বসীমামান সূচক উপর লোয়ার বাউন্ড স্বতন্ত্র একটি অবিচ্ছিন্ন subarray নির্ধারণ করে. [মহিলা ছাত্র] কি আমরা আনুমানিক হিসাব নির্ধারণ করতে এটি অনন্য সংখ্যার একটি অ্যারের? [Yu] নং তার প্রশ্ন তাই, হয় আমরা আমাদের অ্যারের গ্রহ - আমাদের অ্যারের সমস্ত অনন্য সংখ্যা, এবং উত্তর নেই. যদি আমরা আমাদের পাশব বল সমাধান তারপর, শুরু / শেষ সূচক ব্যবহার একটি নির্ধারণ করে আমাদের ক্রমাগত subarray. তাই আপনি যদি আমরা সব সম্ভব শুরু থেকে জন্য বারবার, এবং সব শেষে থেকে> = অথবা, এবং শুরু > জিরো. শুধু -5 নিতে শুরু করে না. এটা এখানে যাও 0 হতে হিসাবে ভাল যাচ্ছে. হাঁ? (ছাত্র, অপাচ্য) [Yu] ওহ, দুঃখিত, এটি একটি -3. সুতরাং এই একটি 2, এই একটি -3. ঠিক আছে. সুতরাং -4, কি সর্বাধিক subarray যে অবস্থানে শেষ যেখানে -4 এ? জিরো. এক? 1, 5, 8. এখন, আমি অবস্থান যেখানে -2 এ সময়ে শেষ হবে. তাই 6, 5, 7, এবং শেষ হল 4. বুদ্ধিমান যে এই হল আমার থেকে জন্য রুপান্তরিত সমস্যা যেখানে আমি এই সূচকগুলি প্রতিটি সময়ে শেষ হবে, তারপর আমার চূড়ান্ত উত্তর হল, জুড়ে একটি মিষ্টির নিতে, এবং সর্বোচ্চ নম্বর নিতে. সুতরাং এই ক্ষেত্রে এর 8. এই যে বোঝা সর্বাধিক subarray এই সূচিতে শেষ হয়, এবং এটি শুরু করার আগে কোথাও. কিন্তু সবাই এই রুপান্তরিত subarray বুঝতে? ঠিক আছে. ওয়েল, আমি কি এই জন্য পুনরাবৃত্তি চিত্র আউট. চলুন শুধু প্রথম কয়েক থেকে বিবেচনা. সুতরাং এখানে এটি ছিল 0, 0, 0, 1, 5, 8. এবং তারপর এখানে সেখানে -2, এবং যে আনা এটি 6 ডাউন. সুতরাং যদি আমি কল অবস্থান এ এন্ট্রি তোমার subproblem (i) কিভাবে একটি পূর্ববর্তী subproblem যাও আমি উত্তরে ব্যবহার করতে পারেন এই subproblem উত্তর? যদি আমি চেহারা সময়ে, এর বলে, এই এন্ট্রি দিন. কিভাবে খুঁজছেন দ্বারা আমি উত্তর 6 গণনা করা যেতে পারে এই অ্যারে এবং এই অ্যারে পূর্ববর্তী subproblems উত্তর সংমিশ্রণ? হ্যাঁ? [মহিলা ছাত্র] আপনি অঙ্ক এর অ্যারে গ্রহণ মধ্যে স্থান অধিকার হওয়ার আগে, যাতে 8, এবং তারপর আপনি বর্তমান subproblem যোগ করুন. [Yu] সুতরাং তার পরামর্শ এই দুটি সংখ্যার তাকান হয়, এই নম্বরটি এবং এই সংখ্যা. তাই এই 8 উত্তর subproblem জন্য (- 1 ক) বোঝায়. এবং কিছু জিনিস আমার ইনপুট অ্যারের এ কল যাতে একটি সর্বাধিক subarray তোমার অবস্থান এ যে শেষ খুঁজে, আমি দুটি বিকল্প থাকে: আমি হয় subarray অবিরত করতে পারেন যে আগের সূচক শেষ, অথবা একটি নতুন অ্যারে শুরু. যদি আমি subarray পূর্ববর্তী সূচিতে যে শুরু অবিরত ছিল, তারপর সর্বাধিক সমষ্টি আমি অর্জন করতে পারেন পূর্ববর্তী subproblem উত্তর প্লাস বর্তমান অ্যারের এন্ট্রি. কিন্তু, আমি একটি নতুন subarray শুরু করার উপায় নেই, সমষ্টি যা ক্ষেত্রে 0. সুতরাং উত্তর হল সবের্াচ্চ, subproblem তোমার 0 - 1, প্লাস বর্তমান অ্যারের এন্ট্রি. এই পুনরাবৃত্তি জানার জন্য? আমাদের পুনরাবৃত্তি, হিসাবে আমরা আবিষ্কৃত হয় subproblem তোমার সমান পূর্ববর্তী subproblem সর্বাধিক প্লাস আমার বর্তমান অ্যারের এন্ট্রি যাও, যার মানে আগের subarray অবিরত, বা 0, একটি আমার বর্তমান সূচিতে নতুন subarray শুরু. এবং একবার আমরা সমাধানের এই টেবিল নির্মিত আপ, তারপর আমাদের চূড়ান্ত উত্তর, শুধু subproblem অ্যারের জুড়ে একটি রৈখিক মিষ্টির না এবং সর্বোচ্চ নম্বর নিতে. এটি একটি কি ঠিক আমি সঠিক বাস্তবায়ন. সুতরাং আমরা একটি নতুন subproblem অ্যারে, subproblems তৈরি. প্রথম এন্ট্রি হয় 0 বা প্রথম এন্ট্রি, যারা দুটি সর্বাধিক. এবং জন্য subproblems বাকি আমরা সঠিক পুনরাবৃত্তি আমরা শুধু আবিষ্কৃত ব্যবহার. এখন আমরা আমাদের subproblems অ্যারের সর্বাধিক, গণনা করা এবং যে এর উত্তর আমাদের চূড়ান্ত. তাই কতটা স্থান আমরা এই অ্যালগরিদম ব্যবহার করা হয়? যদি কেবলমাত্র আপনার CS50 গ্রহণ করেছেন, তাহলে স্থান আলোচনা করা হয়ে থাকতে পারে না অনেক. ওয়েল, এক জিনিস উল্লেখ্য যে আমি নামক আকার n সঙ্গে এখানে malloc. না কি আপনি যে প্রস্তাব? এই অ্যালগরিদম রৈখিক স্থান ব্যবহার করে. আমরা ভাল করতে পারি? কিছু আছে যা আপনি বিজ্ঞপ্তি যা চূড়ান্ত উত্তর গনা অপ্রয়োজনীয়? আমি অনুমান একটি ভাল প্রশ্ন হয়, কোন তথ্য আমরা যাও যাও শেষ মাধ্যমে সমস্ত উপায় বহন করার প্রয়োজন নেই? এখন, যদি আমরা এই দুই লাইন তাকান, আমরা শুধুমাত্র পূর্ববর্তী subproblem যত্ন, এবং আমরা শুধুমাত্র সর্বাধিক আমরা কখনও দেখা করেছি যতদূর যত্নশীল. আমাদের চূড়ান্ত উত্তর গনা, আমরা সম্পূর্ণ অ্যারে প্রয়োজন নেই. আমরা কেবলমাত্র শেষ সংখ্যা, শেষ দুই সংখ্যার প্রয়োজন. Subproblem অ্যারে, সর্বাধিক জন্য এবং শেষ নম্বর জন্য সর্বশেষ সংখ্যা. আসলে, তাই, আমরা এই loops একসঙ্গে ফিউজ্ পারেন থেকে রৈখিক স্থান ধ্রুবক স্থান যান. চলতি সমষ্টি এতদূর এখানে,, subproblem, আমাদের subproblem অ্যারের ভূমিকা প্রতিস্থাপন. তাই বর্তমান সমষ্টি, এতদূর, হয় আগের subproblem উত্তর. এবং যে সমষ্টি, এতদূর, আমাদের সর্বোচ্চ মধ্যে সঞ্চালিত হয়. আমরা সর্বোচ্চ গনা হিসাবে আমরা যেতে বরাবর. এবং তাই আমরা রৈখিক স্থান থেকে যেতে ধ্রুবক স্থান, এবং আমরা আমাদের subarray সমস্যা লিনিয়ার সমাধান আছে. প্রশ্ন এই ধরনের আপনাকে একটি সাক্ষাতকারের সময় পাবেন. সময় জটিলতা কি; কি স্থান জটিলতা? ভাল আপনি কি করতে পারেন? কি যে হয় কাছাকাছি রাখা অপ্রয়োজনীয়? আমি বিশ্লেষণ করে যে আপনি আপনার নিজের দায়িত্ব নিতে হবে এই হাইলাইট করেছেন হিসাবে আপনি এই সমস্যা মাধ্যমে কাজ করছি. সর্বদা নিজেকে, জিজ্ঞাসা, "আমি আরও ভাল করতে পারি?" করা হবে আসলে, আমরা এটা বেশী ভালো করতে পারেন? একটি কৌতুক প্রশ্নের সাজান. আপনি, কারণ আপনার প্রয়োজন হতে পারে না অন্তত সমস্যার ইনপুট পড়া. সুতরাং যে আপনাকে অন্তত সমস্যা ইনপুট পড়া এর মানে হল যে আপনি রৈখিক সময়ের চেয়ে আরও ভাল করতে না পারেন, এবং আপনি ধ্রুবক স্থান চেয়ে ভাল করতে পারে না. তাই এই হয়, আসলে, এই সমস্যার সবচেয়ে ভালো সমাধান. প্রশ্ন? ঠিক আছে. শেয়ার বাজার সমস্যা: "দেওয়া হবে ইন্টিজার, ধনাত্মক, শূন্য বা ঋণাত্মক একটি শ্রেণীবিন্যাস, যে এন দিন ধরে একটি স্টক মূল্য প্রতিনিধিত্ব করেন, একটি ফাংশন সর্বাধিক মুনাফা করতে পারেন গনা লিখুন দেওয়া আছে যা আপনাকে কিনতে হবে এই দিনের মধ্যে ঠিক 1 স্টক বিক্রি করে. " মূলত, আমরা কম কিনতে, উচ্চ বিক্রয় করতে চাইছেন. এবং আমরা ভাল মুনাফা আমরা করতে পারেন চিত্র আউট করতে চান. আমার টিপ যাও ফিরে যাওয়া, কি অবিলম্বে পরিষ্কার, সহজ উত্তর, কিন্তু এটা মন্থর? হ্যাঁ? (ছাত্র, অপাচ্য) >> হ্যাঁ. >> তাই শুধু আপনি যান এবং যদিও স্টক নেই দেখাবে এ সময় প্রতিটি বিন্দু, (দুর্বোধ্য). [Yu] ঠিক আছে, তাই তার সমাধান - কম্পিউটিং তার পরামর্শ সর্বনিম্ন এবং সর্বোচ্চ কম্পিউটিং অগত্যা কাজ করে না কারণ সর্বোচ্চ সর্বনিম্ন আগে ঘটতে পারে. তাহলে নরপশু এই সমস্যার সমাধান বল? দুটি জিনিস যে আমি একটি আমি লাভ করতে নির্ধারণ করা আবশ্যক কি? রাইট. পাশব বল সমাধান - ওহ, তাই, জর্জ এর পরামর্শ হল আমরা মাত্র দুই দিন প্রয়োজন যাও স্বতন্ যারা দুই দিন লাভের নির্ধারণ করা. সুতরাং আমরা প্রতি জোড়া, গনা / বিক্রি করতে চান, মুনাফা, যা নেতিবাচক বা ধনাত্মক বা শূন্য হতে পারে হিসাব করা. সর্বাধিক মুনাফা যে আমরা দিনের সমস্ত জোড়া উপর iterating পরে গণনা করা. যে আমাদের চূড়ান্ত সমাধান হতে হবে. এবং যে সমাধান O (n 2 ^), কারণ আছে n দু 'জোড়া নির্বাচন করবে - দিনের যে আপনি শেষ দিনের মধ্যে নির্বাচন করতে পারেন. ঠিক আছে, তাই আমি পাশব বল সমাধান উপর এখানে যেতে যাচ্ছি না. আমি আপনাকে যে একটি n log n সমাধান আছে বলতে যাচ্ছি. কি আলগোরিদিম আপনি বর্তমানে জানি যে n log n? এটি একটি কৌতুক প্রশ্ন না. সাজানোর মার্জ করুন. বাছাই করা হয় মার্জ n log-n, এবং বস্তুত, এই সমস্যা সমাধানের একটি পদ্ধতি ব্যবহার করতে হয় সাধারণভাবে একটি একত্রীকরণ ধারণা সাজানোর ধরনের বলা হয়,, এবং বিভক্ত করা বশীভূত করা. এবং চিন্তা হিসাবে অনুসরণ করে. আপনি ভাল চৌধুরী / গনা বাম অর্ধেক জোড়া বিক্রয় করতে চাইছেন. ভাল মুনাফা আপনি শুধু দুই দিন ধরে প্রথম n সঙ্গে করতে পারেন খুঁজুন. তারপর আপনি সেরা চৌধুরী / oompute অধিকার অর্ধেক উপর জোড়া বিক্রি করতে চান, তাই দুই দিন ধরে শেষ হবে. এবং এখন প্রশ্ন হল, কিভাবে আমরা এই সমস্যার সমাধান ব্যাক একসাথে মার্জ? হ্যাঁ? (ছাত্র, অপাচ্য) >> ঠিক আছে. তাই আমাকে একটি ছবি আঁকা. হ্যাঁ? (জর্জ, অপাচ্য) >> যথাযথভাবে. জর্জ এর সমাধান ঠিক অধিকার. তাই তার পরামর্শ হল প্রথম, শ্রেষ্ঠ চৌধুরী / বিক্রয় জুড়ি গনা, এবং বাম অর্ধেক যেটা তাই, আসুন যে বাম, বাম কল. শ্রেষ্ঠ / কিনতে জুড়ি অধিকার অর্ধেক যেটা বিক্রয়. কিন্তু যদি আমরা শুধু এই দুটি সংখ্যার তুলনায়, আমরা ক্ষেত্রে অনুপস্থিত করছি যেখানে আমরা এখানে কিনতে এবং ডান অর্ধেক কোথাও বিক্রি করে. আমরা বাম অর্ধেক কেনার অধিকার অর্ধেক, বিক্রি করে. এবং সবচেয়ে ভালো উপায় সেরা চৌধুরী / বিক্রয় জোড়া যে উভয় আংশিক ঘটনাকাল গনা এখানে সর্বনিম্ন এবং সর্বোচ্চ গনা এখানে গণনা করা হয় এবং তাদের পার্থক্য নিতে. সুতরাং দুই ক্ষেত্রে যেখানে চৌধুরী / বিক্রয় জুড়ি ঘটে কেবল এখানে, শুধুমাত্র এখানে, অথবা উভয় আংশিক এই তিনটি সংখ্যা দ্বারা সংজ্ঞায়িত করা হয়. সুতরাং আমাদের অ্যালগরিদম আমাদের সমাধান ফিরে একসাথে মার্জ, আমরা সেরা চৌধুরী / বিক্রয় জুড়ি গনা চান যেখানে বাম অর্ধেক উপর আমরা এবং কেনার অধিকার অর্ধেক উপর বিক্রয়. এবং সবচেয়ে ভালো উপায় হলো যে প্রথমে অর্ধেক নিম্নতম মূল্য হিসাব করা হয়, ডান অর্ধেক সর্বোচ্চ মূল্য, এবং তাদের পার্থক্য নিতে. ফলে তিনটি লাভ, এই তিন নম্বর, আপনি তিনটি সর্বাধিক নিতে, এবং যে সবচেয়ে ভালো মুনাফা আপনি এই প্রথম এবং শেষ দিন ধরে করতে পারেন. এখানে গুরুত্বপূর্ণ লাইন লাল হয়. এটি একটি recursive কল বাম অর্ধেক উত্তর গনা. এটি একটি recursive কল অধিকার অর্ধেক উত্তর গনা. এই দুটি loops জন্য বাম ও ডান অর্ধেক উপর কমপক্ষে এবং সবের্াচ্চ গনা যথাক্রমে,. এখন আমি যে মুনাফা উভয় আংশিক ঘটনাকাল গনা, এবং চূড়ান্ত উত্তর হল এই তিনটি সর্বাধিক. ঠিক আছে. সুতরাং, এটা নিশ্চিত, আমরা একটি অ্যালগরিদম আছে, কিন্তু বড় প্রশ্ন হল, এই সময় জটিলতা কি হয়? এবং কেন আমি একত্রীকরণ সাজানোর উল্লেখ করেছে যে এই ফর্ম উত্তর বাঁটা দুটি এবং তারপর আমাদের সমাধান মার্জ ফিরে একসঙ্গে ঠিক একত্রীকরণ ধরণের ফর্ম. তাই আমাকে সময়কাল মধ্য দিয়ে যেতে হবে. যদি আমরা ধাপের সংখ্যা হতে একটি ফাংশন টন (ঢ) সংজ্ঞায়িত জন্য n দিন, আমাদের দুই recursive কল হয় প্রতিটি টন (n / 2) খরচ হচ্ছে, এবং এইসব কল দুটি আছে. এখন আমি বাম অর্ধেক ন্যূনতম হিসাব করা প্রয়োজন, যা আমি n / 2 সময়, প্লাস অধিকার অর্ধেক সর্বাধিক ইন করতে পারেন. সুতরাং শুধু এই n হল. এবং তারপর প্লাস কিছু ধ্রুবক কাজ. এবং এই পুনরাবৃত্তি সমীকরণ ঠিক একত্রীকরণ সাজানোর জন্য পুনরাবৃত্তি সমীকরণ. এবং আমরা জানি যে সাজানোর হয় একত্রীকরণ লগ n n সময়. অতএব, আমাদের এলগরিদম লগ n সময় n. এই পুনরাবৃত্তির জানার জন্য? শুধু এই একটি সংক্ষিপ্ত সংক্ষিপ্তবৃত্তি: T (ঢ) হয় ধাপের সংখ্যা সর্বাধিক মুনাফা গনা উপর n দিনের কোর্স. উপায় আমরা বিভক্ত আমাদের recursive কল আপ প্রথম n / 2 দিন আমাদের সমাধান কলিং দ্বারা হয়, যাতে এর একটি কল, এবং তারপর আমরা দ্বিতীয়ার্ধে উপর আবার ফোন. যাতে এর দুটি কল. এবং তারপর আমরা বাম অর্ধেক একটি সর্বনিম্ন খুঁজে, যা আমরা রৈখিক সময় করতে পারেন, ডান অর্ধেক সর্বোচ্চ, যা আমরা রৈখিক সময় করতে পারেন খুঁজে. সুতরাং n / 2 + n / 2 হয় ঠিক হবে. তারপর আমরা কিছু কাজ ধ্রুবক, পাটিগণিত করছেন মত ​​যা আছে. এই পুনরাবৃত্তি সমীকরণ ঠিক একত্রীকরণ সাজানোর জন্য পুনরাবৃত্তি সমীকরণ. তাই, আমাদের পরিহার আলগোরিদিম এ এন এন লগ ইন করুন. সুতরাং আমরা কতটা স্থান ব্যবহার করে থাকেন? যাক এর কোড ফিরে যান. একটি ভাল প্রশ্ন হয়, কতগুলি স্ট্যাকের ফ্রেম আমরা কখনও কোন মুহুর্তে আছে? যেহেতু আমরা recursion ব্যবহার করছেন, স্ট্যাকের সেকেন্ডে ফ্রেমের সংখ্যা আমাদের স্থান ব্যবহার নির্ধারণ করে. চলুন n = 8 বিবেচনা. আমরা 8 রদবদল কল, যার প্রথম চারটি থেকে রদবদল ফোন করবে, যার প্রথম দুই থেকে একটি অদলবদল করা হবে. সুতরাং আমাদের স্ট্যাকের হয় - এই হল আমাদের স্ট্যাকের. এবং তারপর আমরা 1 আবার অদলবদল, এবং এর যে কি আমাদের বেস কেস হল, তাই আমরা অবিলম্বে ফেরত. আমরা কখনও এই স্ট্যাকের অনেক ফ্রেম তুলনায় আরো আছে? সংখ্যা যেহেতু প্রতিটি সময় আমরা একটি আবাহন করবেন, একটি পরিহার যাও recursive আবাহন, আমরা অর্ধেক আমাদের আকার বিভক্ত করা. সুতরাং স্ট্যাকের ফ্রেম সর্বোচ্চ সংখ্যক আমরা কখনও কোন মুহুর্তে আছে লগ n স্ট্যাকের ফ্রেম অনুক্রম হল. প্রতিটি স্ট্যাকের ফ্রেম ধ্রুবক স্থান আছে, এবং সেইজন্য স্থান মোট পরিমাণ, স্থান সর্বোচ্চ পরিমাণ আমরা কখনও ব্যবহার হয় O (n log-) স্থান যেখানে n হল দিনের সংখ্যা. এখন, সবসময় নিজেকে জিজ্ঞেস করুন, "আমরা কি ভালো পারেন?" এবং বিশেষ করে, একটি সমস্যা সমাধান আমরা ইতিমধ্যে আমরা এই কমে যায়? একটি ইঙ্গিত: আমরা শুধু এই দুই আগে অন্যান্য সমস্যা নিয়ে আলোচনা করা, এবং তা পরিহার করা যাচ্ছে না. আমরা চরম subarray সমস্যার মধ্যে এই স্টক মার্কেট সমস্যা রূপান্তর করতে পারেন. কিভাবে এই আমরা কি করতে পারি? আপনি কি এক? এমি? (এমি, অপাচ্য) [Yu] যথাযথভাবে. তাই চরম subarray সমস্যা, আমরা একটি সমষ্টি জন্য একটি ধারাবাহিক subarray উপর খুঁজছেন. এবং স্টক সমস্যার জন্য এমি এর পরামর্শ, পরিবর্তন, বা deltas বিবেচনা. এবং এই একটি ছবি হয় - এই একটি স্টক মূল্য, কিন্তু যদি আমরা প্রতিটি দিন পরপর মধ্যে পার্থক্য গ্রহণ করে - তাই আমরা দেখতে যে সর্বাধিক দাম, সর্বোচ্চ মুনাফা আমরা করতে পারে যদি এখানে আমরা কিনতে এবং বিক্রয় এখানে. কিন্তু এর একটানা যাক - এর subarray সমস্যা যাক. এখানে থেকে যাচ্ছে এখানে, - তাই এখানে, আমরা করতে পারেন আমরা একটি ইতিবাচক পরিবর্তন আছে, এবং তারপর এখানে এখানে থেকে যাচ্ছে আমরা একটি নেতিবাচক পরিবর্তন আছে. কিন্তু তারপর থেকে এখানে এখানে, আমরা যাচ্ছে একটি বিশাল ইতিবাচক পরিবর্তন আছে. এবং এই পরিবর্তনগুলি যে আমরা আপ আমাদের চূড়ান্ত লাভ পেতে চান যোগফল. তারপর আমরা এখানে আছে আরো নেতিবাচক পরিবর্তন. আমাদের সর্বাধিক subarray সমস্যার মধ্যে আমাদের স্টক সমস্যা হ্রাস কী যাও দিনের মধ্যে deltas বিবেচনা করা হয়. সুতরাং আমরা একটি নতুন অ্যারে বলা deltas তৈরি, 0 হতে প্রথম এন্ট্রি আরম্ভ করা, প্রতিটি ডেলটা জন্য তারপর এবং (ঝ), যাক যে পার্থক্য করা আমার ইনপুট অ্যারের (আমি), এবং অ্যারের (ক - 1). তারপর আমরা আমাদের একটি সর্বাধিক subarray জন্য রুটিন পদ্ধতি কল ব - দ্বীপ এর একটি অ্যারের মধ্যে ক্ষণস্থায়ী. এবং কারণ সর্বাধিক subarray হয় রৈখিক সময়, এবং এই হ্রাস, এই ডেলটা অ্যারে নির্মাণ এই প্রক্রিয়ার, এছাড়া রৈখিক সময়, তারপর স্টক জন্য চূড়ান্ত সমাধান হে (ঢ) কাজ প্লাস হে (ঢ) কাজ, এখনও হে (ঢ) কাজ. সুতরাং আমরা একটি রৈখিক আমাদের সমস্যার সমাধান সময় আছে. কি সবাই বুঝতে এই রূপান্তর? সাধারণত, একটি ভাল ধারণা যে সবসময় আপনার থাকা উচিত একটি নতুন সমস্যা যে আপনি দেখছি তা কমাতে চেষ্টা করুন. যদি মনে পরিচিত একটি পুরানো সমস্যা, একটি পুরোনো সমস্যার এটি হ্রাস করার চেষ্টা করুন. এবং যদি আপনি সমস্ত সরঞ্জাম যে আপনি পুরানো সমস্যা ব্যবহার করেছি ব্যবহার করতে পারেন নতুন সমস্যার সমাধান. সুতরাং আপ মোড়ানো, প্রযুক্তিগত সাক্ষাত্কার প্রতিদ্বন্দ্বিতা হয়. এই সমস্যাগুলো সম্ভবত হয়, আরো কঠিন সমস্যার কিছু আপনি যে একটি সাক্ষাত্কারে দেখতে হতে পারে, তাই আপনি যদি সব সমস্যার যে আমি আচ্ছাদিত বুঝতে পারছি না, এটা ঠিক. এগুলি আরো চ্যালেঞ্জিং সমস্যার কিছু. অভ্যাস, অভ্যাস, অভ্যাস. আমি বিলিপত্র সমস্যা অনেক দিয়েছে, যাতে স্পষ্টভাবে যারা চেক আউট. এবং আপনার সাক্ষাত্কার উপর সৌভাগ্য. সমস্ত সম্পদ আমার এই লিঙ্ক এ পোস্ট করা হয়, এবং আমার জ্যেষ্ঠ বন্ধু এক বিদ্রূপ প্রযুক্তিগত সাক্ষাত্কার না দেওয়া করেনি, তাই আপনি যদি আগ্রহী, যে ইমেইল ঠিকানায় ইমেল ইয়াও হবে. যদি আপনাকে কিছু প্রশ্ন আছে, আপনি কি আমাকে বলতে পারেন. আপনি কি বলছি নির্দিষ্ট প্রশ্নের সাথে সম্পর্কিত প্রযুক্তিগত ইন্টারভিউ আছে অথবা কোনো সমস্যা আমরা এতদূর দেখা করেছেন? ঠিক আছে. ওয়েল, আপনার সাক্ষাতকার উপর সৌভাগ্য. [CS50.TV]