একটি উদ্দেশ্যমূলক প্রতিক্রিয়া:
যদিও এই প্রশ্নের আমার প্রাথমিক প্রতিক্রিয়াটি শীঘ্রই-স্নাতক সিএস ছাত্র হিসাবে আমার অভিজ্ঞতা অভিজ্ঞতা এবং সিএস ক্ষেত্রে আমি কী ধরনের লোকদের সাথে কাজ করতে চেয়েছিলাম সে সম্পর্কে আমার অনুমানিত মতামতের ভিত্তিতে ছিল। আসলে একটি উদ্দেশ্য রয়েছে (এসিএম সিগসিইএসইসি এবং আইইইইই কম্পিউটিং সোসাইটির বিষয়গত মতামতের সাথে সম্মত) উত্তর। প্রতি দশ বছরে এসিএম এবং আইইইই সংস্থাগুলি একটি যৌথ প্রকাশনায় সহযোগিতা করে যা কম্পিউটিং শিল্পের রাজ্যের পেশাদার জ্ঞানের উপর ভিত্তি করে স্নাতক কম্পিউটার বিজ্ঞান পাঠ্যক্রমের জন্য পরামর্শগুলি বিশদ দেয় । আরও তথ্য cs2013.org এ পাওয়া যাবে । কমিটি তাদের পাঠ্যক্রমের সুপারিশ তালিকাভুক্ত একটি চূড়ান্ত প্রতিবেদন প্রকাশ করে ।
এটি বলেছিল, আমি এখনও আমার তালিকাটি বেশ ভাল বলে মনে করি।
নীচে মূল উত্তর।
আমার কী জানা উচিত?
নূন্যতম
আমি মনে করি একজন কম্পিউটার বিশেষজ্ঞে একজন দক্ষ প্রোগ্রামারের কমপক্ষে স্নাতক স্তরের জ্ঞান থাকা উচিত। অবশ্যই, আপনি কম্পিউটার বিজ্ঞানের কেবলমাত্র একটি ছোট উপসেট সহ অনেকগুলি কার্যকরী ক্ষেত্রে কার্যকর হতে পারেন কারণ শিলা শক্তিশালী সম্প্রদায় সিএস বসেছে, এবং বেশিরভাগ পেশাদার পদের সংকীর্ণ ফোকাস। এছাড়াও, অনেকে স্নাতক অধ্যয়নের পরে আরও বিশেষজ্ঞ করবে। তবে, আমি মনে করি না হয় হয় সিএস জ্ঞানের গোপনীয়তা না রাখার অজুহাত।
শিরোনাম প্রশ্নের উত্তর দেওয়ার জন্য, এখানে স্নাতক প্রাপ্তির পরে একজন স্নাতক স্নাতক শিক্ষার্থী (একজন দক্ষ প্রোগ্রামারের ভিত্তি) জানতে হবে:
উপাত্ত কাঠামো
- মেশিন ডেটা প্রতিনিধিত্ব
- ওনস, টু'র পরিপূরক এবং সম্পর্কিত গাণিতিক
- শব্দ, পয়েন্টার, ভাসমান পয়েন্ট
- বিট অ্যাক্সেস, শিফটিং এবং ম্যানিপুলেশন
- লিঙ্কযুক্ত তালিকাগুলি
- হ্যাশ টেবিল (মানচিত্র বা অভিধান)
- অ্যারেগুলির
- গাছ
- স্ট্যাক
- লাইনগুলি
- গ্রাফ
- ডেটাবেস
আলগোরিদিম
- শ্রেণীবিভাজন:
- বুদ্বুদ বাছাই (এটি খারাপ কেন তা জানতে)
- সন্নিবেশ বাছাই করুন
- বাছাই বাছাই করুন
- দ্রুত বাছাই করুন
- রেডিক্স শৈলীর ধরণ, গণনা বাছাই এবং বালতি বাছাই
- গাদা সাজান
- বোগো এবং কোয়ান্টাম সাজান (=
- অনুসন্ধান করা হচ্ছে:
- লিনিয়ার অনুসন্ধান
- বাইনারি অনুসন্ধান
- গভীরতা প্রথম অনুসন্ধান
- প্রস্থ প্রথম অনুসন্ধান
- স্ট্রিং ম্যানিপুলেশন
- পুনরাবৃত্তির
- ট্রি ট্রভারসাল
- ট্র্যাভারসাল তালিকা
- হ্যাশিং ফাংশন
- একটি হ্যাশ টেবিল, গাছ, তালিকা, স্ট্যাক, সারি, অ্যারে এবং সেট বা সংগ্রহের কংক্রিট বাস্তবায়ন
- নির্ধারিত অ্যালগরিদমগুলি
- ফাইল সিস্টেম ট্র্যাভারসাল এবং ম্যানিপুলেশন ( ইনোড বা সমমানের স্তরে)।
নকশা নিদর্শন
- modularization
- কারখানা
- নির্মাতা
- একক বস্তু
- এডাপটার
- প্রসাধক
- ফ্লাইওয়েট
- পর্যবেক্ষক
- iterator
- রাষ্ট্র [মেশিন]
- মডেল ভিউ কন্ট্রোলার
- থ্রেডিং এবং সমান্তরাল প্রোগ্রামিং প্যাটার্নস
paradigms
- অনুজ্ঞাসূচক
- অবজেক্ট ওরিয়েন্টেড
- ক্রিয়ামূলক
- ঘোষণামূলক
- স্ট্যাটিক এবং ডায়নামিক প্রোগ্রামিং
- ডেটা মার্কআপ
জটিলতা তত্ত্ব
- জটিলতা স্পেস
- Computability
- নিয়মিত, প্রসঙ্গমুক্ত এবং ইউনিভার্সাল ট্যুরিং মেশিন সম্পূর্ণ ভাষাগুলি
- নিয়মিত অভিব্যক্তি
- গণনা এবং বেসিক সংমিশ্রক
তার পরেও
আপনার প্রশ্নের পরে আপনি যা জিজ্ঞাসা করছেন সেটিতে প্রবেশের জন্য, আপনি যদি উপরের সাথে পরিচিত হন তবে আপনাকে কোনও নির্দিষ্ট দৃশ্যের জন্য উপযুক্ত প্যাটার্ন, অ্যালগরিদম এবং ডেটা কাঠামো সনাক্ত করতে সহজেই সক্ষম হওয়া উচিত। যাইহোক, আপনার চিনতে হবে যে প্রায়শই কোনও সেরা সমাধান নেই। কখনও কখনও আপনাকে দুটি খারাপের কম বাছাই করতে বা এমনকি দুটি সমানভাবে व्यवहार्य সমাধানের মধ্যে কেবল চয়ন করার প্রয়োজন হতে পারে। এই কারণে, আপনার সমবয়সীদের বিরুদ্ধে আপনার পছন্দটি রক্ষা করতে আপনার সাধারণ জ্ঞান প্রয়োজন knowledge
অ্যালগরিদম এবং ডেটা স্ট্রাকচারের জন্য এখানে কিছু টিপস রয়েছে:
- বাইনারি অনুসন্ধান কেবল (এবং হওয়া উচিত) সাজানো ডেটাতে ব্যবহার করা যেতে পারে।
- র্যাডিক্স স্টাইলের প্রকারগুলি দুর্দান্ত, তবে কেবল যখন আপনার সীমাবদ্ধ শ্রেণির জিনিসগুলি বাছাই করা হয়।
- হ্যাশ টেবিলের মতো গাছগুলি প্রায় কোনও কিছুর জন্য ভাল। একটি হ্যাশ টেবিলের কার্যকারিতা এক্সট্রাপোলটেড এবং দক্ষতার ব্যয়ে অনেক সমস্যার সমাধান করতে ব্যবহৃত হতে পারে।
- বেশিরভাগ উচ্চ স্তরের ডেটা স্ট্রাকচারকে ব্যাক করতে অ্যারে ব্যবহার করা যেতে পারে। কখনও কখনও একটি "ডেটা স্ট্রাকচার" কোনও অ্যারেতে অবস্থানগুলি অ্যাক্সেস করার জন্য কিছু চালাক গণিতের চেয়ে বেশি নয়।
- ভাষার পছন্দটি আপনার চুলকে বাইরে টানতে বা কোনও সমস্যা সমাধানের মধ্যে পার্থক্য হতে পারে।
- ASCII টেবিল এবং একটি 128 উপাদান অ্যারে একটি অন্তর্নিহিত হ্যাশ টেবিল (=
- নিয়মিত প্রকাশগুলি অনেক সমস্যার সমাধান করতে পারে তবে এইচটিএমএল বিশ্লেষণ করতে সেগুলি ব্যবহার করা যায় না ।
- কখনও কখনও ডেটা কাঠামো অ্যালগরিদমের মতোই গুরুত্বপূর্ণ is
উপরের কিছু মনে হয় কোনও মস্তিষ্কের মত নয়, এবং কিছুটিকে অস্পষ্ট বলে মনে হতে পারে। আপনি যদি আমাকে আরও বিশদে যেতে চান তবে আমি পারি। তবে, আমার আশা যখন আরও দৃ concrete় প্রশ্নের মুখোমুখি হয় যেমন, "একটি স্ট্রিংয়ের প্রতিটি চরিত্রের উপস্থিতিগুলির সংখ্যা গণনা করে এমন একটি ফাংশন ডিজাইন করুন", আপনি ASCII টেবিলটি সম্পর্কে টিপটি এবং 128 এলিমেন্ট অ্যারেগুলি ঝরঝরে সুস্পষ্ট হ্যাশ গঠন করে তাকান you উত্তরের টেবিল
এই ধারণাগুলি ভিত্তিক, আমি আপনার প্রশ্নের বর্ণিত লকার সমস্যার উত্তর প্রস্তাব করব।
আপনার প্রশ্নের মধ্যে উত্থিত সমস্যার উত্তর।
এটি আপনার প্রশ্নের সেরা উত্তর নাও হতে পারে তবে আমি মনে করি এটি এমন একটি আকর্ষণীয় যা খুব জটিল কিছু প্রয়োজন হয় না। এবং এটি অবশ্যই একটি সারি ব্যবহারের সময় জটিলতা বা স্ট্যাকের জন্য লকারটি মুক্ত কিনা তা নির্ধারণের জন্য রৈখিক সময়ের প্রয়োজন হবে।
আপনার 0-999 লকার রয়েছে। এখন, আপনার কাছে একটি নির্দিষ্ট সংখ্যক লকার রয়েছে, তাই আপনি 0-999 রেঞ্জের কোনও সংঘর্ষ না করে সহজেই একটি হ্যাশিং ফাংশন কল্পনা করতে পারেন। এই ফাংশনটি কেবল h (x) = x mod 1000. এখন, [ধারণাগতভাবে] পূর্ণসংখ্যক কীগুলি এবং আপনার মান হিসাবে 1000 এলিমেন্ট চর অ্যারের সামগ্রীগুলি সহ একটি হ্যাশ টেবিল তৈরি করুন। যদি কোনও গ্রাহক ব্যবহারের জন্য loc৮ টি লকার সংরক্ষণ করতে চান, কেবল হ্যাশ ফাংশনটিতে 78 78 টি রাখুন (returning 78 প্রত্যাবর্তন), এবং তারপরে সেই নম্বরটি অ্যারের বেস পয়েন্টারে যুক্ত করুন - অফসেট মান দ্বারা চিহ্নিত স্থানটিতে একটি সত্য মান সংরক্ষণ করুন । একইভাবে, আপনার যদি 78 টি ব্যবহার করা হচ্ছে কিনা তা খতিয়ে দেখতে প্রয়োজন, কেবল সেই জায়গাতে সঞ্চিত মানটি পড়ুন এবং সত্যের বিপরীতে পরীক্ষা করুন।
এই সমাধানটি বাইনারি ট্রি দ্বারা ব্যাকযুক্ত অগ্রাধিকার সারির ক্ষেত্রে লগ (এন) সময়ের সঞ্চয় এবং অনুসন্ধানের বিপরীতে অনুসন্ধান এবং সঞ্চয় করার জন্য স্থির সময়ে কাজ করে। বর্ণনাটি ইচ্ছাকৃত ভার্জোজ যার ফলে আপনি দেখতে পারেন উচ্চতর ধারণাগুলি একটি দক্ষ অ্যালগরিদমে সিদ্ধ হচ্ছে।
এখন, আপনি জিজ্ঞাসা করতে পারেন, যদি আমার কাছে উপলব্ধ লকারগুলির সমস্ত জানা দরকার, তবে অগ্রাধিকারের সারিটি কী ভাল হবে না? অগ্রাধিকারের কাতারে যদি কে উপলব্ধ লকার উপস্থিত থাকে, তাদের সমস্তের উপর পুনরাবৃত্তি করা k পদক্ষেপ গ্রহণ করবে। তদতিরিক্ত, আপনার অগ্রাধিকারের সারি প্রয়োগের উপর নির্ভর করে আপনার সমস্ত অগ্রাধিকারের সারিটি পুনর্নির্মাণ করতে হতে পারে সমস্ত কিছু দেখুন .. যা k * লগ (কে): (কে <1000) পদক্ষেপ গ্রহণ করবে। অ্যারের সমাধানে আপনাকে কেবলমাত্র 1000 টি উপাদান অ্যারের পুনরাবৃত্তি করতে হবে এবং কোনটি খোলা আছে তা পরীক্ষা করতে হবে। আপনি কেবলমাত্র কে সময় পরীক্ষা করতে বাস্তবায়নে একটি উপলভ্য বা ব্যবহৃত তালিকা যুক্ত করতে পারেন।