সাক্ষাত্কারে ডেটা স্ট্রাকচার এত গুরুত্বপূর্ণ কেন? [বন্ধ]


106

কলেজ থেকে স্নাতক পাস করার সময় ডেটা স্ট্রাকচারে আমি এতটা শক্তিশালী ছিলাম না তা অবশ্যই আমাকে স্বীকার করতে হবে। আমার গ্র্যাজুয়েশন চলাকালীন ক্যাম্পাসের পুরো স্থান জুড়ে, আমি প্রত্যক্ষ করেছি যে অ্যামাজন, মাইক্রোসফ্ট ইত্যাদির মতো বেশিরভাগ বিগ প্রযুক্তি প্রতিষ্ঠানগুলি মূলত ডেটা স্ট্রাকচারের দিকে মনোনিবেশ করে। এটি প্রদর্শিত হয় যেন ডেটা স্ট্রাকচারগুলিই কেবলমাত্র তারা স্নাতক থেকে প্রত্যাশা করে।

সত্যি কথা বলতে কি আমি খারাপ লাগলাম। আমি ভাল কোড লিখি। আমি কোডিংয়ের স্ট্যান্ডার্ড নকশার ধরণগুলি অনুসরণ করি, আমি ডেটা স্ট্রাকচার ব্যবহার করি না তবে অ্যারেলিস্ট, লিংকডলিস্ট ইত্যাদির মতো জাভা উন্মুক্ত এপিআইয়ের মতো পৃষ্ঠের স্তরে কিন্তু সংস্থাগুলি সাধারণত পয়েন্টার ভিত্তিক মেমরির হেরফের এবং সময় জটিলতার মতো ডেটা স্ট্রাকচারের জটিল বিষয়গুলিতে মনোনিবেশ করে।

সম্ভবত আমার জাভা ব্যাকগ্রাউন্ডের কারণেই, আমি তখন কোডের দক্ষতা এবং যুক্তি কেবল তখনই বুঝতে পারি যখন অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের মতো জিনিস, উদাহরণস্বরূপ ইত্যাদির ক্ষেত্রে কথা বলা হয় তবে আমি কখনই বিট এবং বাইটের স্তরে নিচে যাইনি। আমি চাই না যে ডেটা স্ট্রাকচারগুলিতে আমার এই জ্ঞানের ঘাটতির জন্য লোকেরা আমাকে তাকাবে।

সুতরাং সত্যিই কেন ডেটা স্ট্রাকচারের উপর এই সমস্ত জোর?


36
আমি সত্যিই আপনার প্রশ্ন পাই না। আপনি বলেছেন "আমি ভাল কোড লিখি" - কীভাবে ডেটা স্ট্রাকচারগুলি ভাল কোডের অংশ হতে পারে না। এবং, আমি সন্দেহ করি যে কোনও আন্তরিক সাক্ষাত্কারকারীর তাদের অত্যধিক কৃপণতা হবে।
বিশ্বাসঘাতক

6
@ গ্রিনজিট: একটি হ্যাশ মানচিত্র প্রয়োগ এবং এর এপিআই ব্যবহার করার মধ্যে পার্থক্য রয়েছে। একটি সাক্ষাত্কারে আমি যা মূল্যবান তা হ'ল যদি তারা আমার জন্য কোনও অ্যাপ্লিকেশন বর্ণনা করে, তবে আমাকে কেন্দ্রীয় ডেটা স্ট্রাকচারগুলি তৈরি করতে এবং আমার পছন্দগুলি ব্যাখ্যা করতে বলে।
গিরিগিরিস আন্দ্রেসেক 18'11

7
আপনি কি জিজ্ঞাসা করা পছন্দ করবেন?
টেম্পটার

13
@ জুরিলি - কন্টেইনার লাইব্রেরি কখন ব্যবহার করবেন তা বুঝতে, অন্তর্নিহিত ডেটা স্ট্রাকচার কীভাবে কাজ করে তা সম্পর্কে কিছুটা জ্ঞান রাখতে সহায়তা করে। আপনি যে লাইব্রেরিগুলি ব্যবহার করছেন তার সময় এবং স্থান জটিলতাগুলি যদি আপনি না জানেন তবে আপনি কোডের দক্ষতা সম্পর্কে জানেন তা মেনে নেওয়া শক্ত - এটি ছোট পরীক্ষার ডেটাসেটগুলিতে ভাল কাজ করার অর্থ এই নয় যে এটি বড় ডেটাসেটগুলিতে ভাল স্কেল করবে doesn't বাস্তব জগতে. আইএমও, সময় এবং স্থান সংক্রান্ত জটিলতা বোঝা ক্লাস এবং পদ্ধতির নামগুলি জানার মতো এপিআই বোঝার তত একটি অংশ - সম্ভবত আরও বেশি, কারণ ইন্টেলিজেন্স আপনাকে জটিলতাগুলি বলবে না।
স্টিভ 314

2
একটি ভাল তথ্য কাঠামো পরিষ্কার, সহজ কোড দেয়। একটি খারাপ ডেটা কাঠামো জটিল কোড দেয়। এটি সঠিকভাবে পাওয়া গুরুত্বপূর্ণ।

উত্তর:


121

মাইক্রোসফ্টের মতো বেশিরভাগ বিগ টেক কোম্পানি মূলত ডেটা স্ট্রাকচারের দিকে মনোনিবেশ করে focus এটি প্রদর্শিত হয় যেন ডেটা স্ট্রাকচারগুলিই কেবলমাত্র তারা স্নাতক থেকে প্রত্যাশা করে।

না, আরও আছে। উদাহরণস্বরূপ, আমরা এটিও প্রত্যাশা করি যে আপনি দ্রুত শিখনী যিনি স্বল্প সময়ের মধ্যেই নতুন ফ্রেমওয়ার্ক, এপিআই বা এমনকি প্রোগ্রামিং ভাষা শিখতে পারেন। এটি একটি ন্যূনতম সর্বনিম্ন বার। যে কেউ নতুন কাঠামো, এপিআই বা ভাষা শিখতে দীর্ঘ সময় নেয় সে মাইক্রোসফ্টের বেশিরভাগ দলে সফল বিকাশকারী হতে পারে না।

এবং অবশ্যই আরও অনেকগুলি বিষয় রয়েছে যা আমরা কেবলমাত্র ডেটা স্ট্রাকচারের কাঁচা জ্ঞান ব্যতীত সাক্ষাত্কারগুলিতে ফোকাস করি। অস্পষ্ট স্পেসিফিকেশনগুলির সাথে ডিল করার ক্ষমতা, উদাহরণস্বরূপ, বা কোডিং প্যাটার্নগুলি যা অনিরাপদ কোড তৈরি করে বা অন্যান্য কয়েক ডজন জিনিসকে সনাক্ত করার ক্ষমতা। তবে ডেটা স্ট্রাকচারগুলি বোঝার ক্ষমতা অবশ্যই খুব বড় একটি।

এটি বিশেষত ক্ষেত্রে যে সাম্প্রতিক সিএস গ্র্যাজুয়েটদের জন্য ডেটা স্ট্রাকচারের জ্ঞান পরীক্ষার দিকে সাক্ষাত্কার পক্ষপাতদুষ্ট। সাম্প্রতিক স্নাতক, যাদের বেশিরভাগের বাস্তব-বিশ্বের অভিজ্ঞতা নেই, একই ধরণের জিনিসগুলিতে ভাল হওয়ার আশা করা হয় না যা পনের বছরের শিল্প অভিজ্ঞতার সাথে ভাল হবে।

আমাকে অবশ্যই স্বীকার করতে হবে যে আমি ডেটা কাঠামোতে এতটা শক্তিশালী ছিলাম না

আপনি নিজের সম্পর্কে যে জানেন যে এটা ভাল। আপনি যদি নিজের সম্পর্কে এটি পরিবর্তন করতে অক্ষম বা অনিচ্ছুক হন তবে আমার প্রস্তাবটি হ'ল আপনি এমন কোনও কাজের জন্য আবেদন করবেন না যার জন্য ডেটা স্ট্রাকচার সহ সুবিধার দরকার রয়েছে facility

এই সাধারণ দৃষ্টিকোণটি রয়েছে যে একটি ভাল প্রোগ্রামার অগত্যা ডেটা স্ট্রাকচার সম্পর্কে ভাল জ্ঞানযুক্ত একজন।

এটি টোটোলজিক্যাল যে একজন ভাল প্রোগ্রামার এমন একজন প্রোগ্রামার যিনি বিভিন্ন ধরণের প্রোগ্রামগুলি তৈরি করা দরকার যা নির্মাণে ভাল। প্রচুর প্রোগ্রামার এমন কাজগুলিতে কাজ করে যেগুলির জন্য ডেটা স্ট্রাকচারের গভীর জ্ঞানের প্রয়োজন হয় না। তাদের মধ্যে কিছু এমন কাজগুলিতে কাজ করে যা ব্যবহারকারীর ইন্টারফেস ডিজাইনের গভীর জ্ঞান প্রয়োজন। বা ডাটাবেস নরমালাইজেশন। বা যাই হোক না কেন. এই লোকেরা তাদের ডোমেনগুলিতে এখনও "ভাল প্রোগ্রামার" হতে পারে।

ডেটা স্ট্রাকচারের উপর এই সমস্ত জোর কেন?

আমি ডেটা স্ট্রাকচার সম্পর্কে সাক্ষাত্কারের প্রশ্ন জিজ্ঞাসা করি কারণ আমার দলে ডেভেলপাররা প্রতিদিন জটিল ডেটা স্ট্রাকচার ডিজাইন করে, প্রয়োগ করে এবং পরিচালনা করে। গতকাল আমাদের চার ঘন্টা বৈঠক হয়েছিল যাতে একটি অর্ধ-ডজন বিকাশকারী একটি নির্দিষ্ট গাছের নোডে একক বুলিয়ান ক্ষেত্র যুক্ত করার পক্ষে মতামত নিয়ে তর্ক করেছিলেন। গভীর স্তরে ডেটা কাঠামো বোঝার দক্ষতার চেয়ে আমার দলের পক্ষে সম্ভবত আরও গুরুত্বপূর্ণ কোনও দক্ষতা নেই। এটি নিয়ে আমরা ইন্টারভিউর প্রশ্ন জিজ্ঞাসা না করা বোকামি হবে since

ডেটা স্ট্রাকচারগুলিতে জ্ঞান না থাকা কি আসলেই প্রোগ্রামিংয়ে কারও পেশাকে প্রভাবিত করে?

ভাল এটি অবশ্যই আপনাকে আমার দলে চাকরি পেতে বাধা দেবে। তবে আমি আগে যেমন বলেছি, প্রোগ্রামিং একটি বিশাল ক্ষেত্র। প্রচুর ধরণের কম্পিউটার প্রোগ্রামিং রয়েছে যার জন্য ডেটা স্ট্রাকচারের জ্ঞানের প্রয়োজন হয় না।

একটি ভাল এবং খারাপ প্রোগ্রামারকে আলাদা করার পক্ষে এই বিষয়টির জ্ঞানটি কি আসলেই যথেষ্ট ভিত্তি?

না। তবে মাইক্রোসফ্টে সফল হওয়ার সম্ভাবনা নেই এমন বিকাশকারীদের সনাক্ত করা প্রায় সর্বদা যথেষ্ট। যেহেতু আমি প্রাথমিকভাবে এটি সনাক্ত করতে আগ্রহী তাই ডেটা স্ট্রাকচারের জ্ঞান হ'ল আমি সাক্ষাত্কারগুলিতে পরীক্ষার কারণগুলির মধ্যে একটি।


10
ধন্যবাদ এক টন এরিক! এটি আমার প্রশ্নের উত্তরটি আমি পেয়েছি least :-)
ভামসী ইমানি

2
@ এরিকলিপার্ট, এই দুর্দান্ত উত্তরের জন্য আপনাকে ধন্যবাদ। একজন স্ব-শিক্ষিত বিকাশকারী হিসাবে যিনি এখনও ডেটা স্ট্রাকচার সম্পর্কে তার আনুষ্ঠানিক জ্ঞানের অভাবে কাটতে পারেন, আপনি কি এমন কোনও বইয়ের প্রস্তাব দিচ্ছেন যা আমাকে দেখাতে পারে যে আমি কী মিস করছি?
বন্ধ কাউবয়

5
@ ক্লোজার কাউবয়: ডেটা স্ট্রাকচার এবং অ্যালগরিদমের মূল বিষয়গুলির জন্য, কর্পেন, লেজারসন এবং রিভেস্টের "অ্যালগরিদমগুলির পরিচিতি" একটি প্রমিত পাঠ্যপুস্তক। আপনি যদি কার্যকরী শৈলীর ডেটা কাঠামোতে আগ্রহী হন তবে ক্রিস ওকাসাকির বইটি খুব ভাল তবে বেশ উন্নত।
এরিক লিপার্ট

2
@ ক্লোজারকোবয় প্রিন্সটন দ্বারা প্রদত্ত কোর্সেরার 'অ্যালগোরিদম আই' কোর্সটি দেখুন। আমিও একটি স্ব-শিক্ষিত প্রোগ্রামার এবং সিএস তত্ত্ব জ্ঞানের আমার ফাঁকগুলি পূরণ করতে সাহায্য করার জন্য এটি অনেক কিছু করছে।
ইভান প্লেইস

133

ডেটা স্ট্রাকচার সম্পর্কে একটি গুরুত্বপূর্ণ বিষয় হ'ল এগুলি সর্বজনীন এবং নিরবধি, অন্তত ব্যবহারিক উদ্দেশ্যে। যে কেউ গত 30 বছরে বিকাশকারী ছিলেন তাদের একক / ডাবল লিঙ্কযুক্ত তালিকাগুলি, বাইনারি গাছ বা গ্রাফের মতো বেসিক ডেটা স্ট্রাকচারগুলি জানতে হবে। আপনি যদি তাদের দু'টি বিকাশকারীকে তাদের সম্পর্কে জিজ্ঞাসা করেন তবে আপনি তাদের উত্তরগুলির দ্বারা বিকাশকারীদের জ্ঞানের তুলনা করতে পারেন। ফ্রেমওয়ার্ক বা এমনকি ভাষার জন্য এটি খুব কমই বলা যেতে পারে: আপনি যদি দুজন বিকাশকারীকে রেল সম্পর্কে জিজ্ঞাসা করেন এবং একজন অপরটির চেয়ে অনেক বেশি জানেন, তবে এটি আপনাকে কী বলে? আপনি যেমন প্রশ্নে বলেছেন, একজন স্মার্ট বিকাশকারী খুব দ্রুত একটি নতুন কাঠামো শিখতে পারে, সুতরাং তাদের বর্তমান জ্ঞানের পরীক্ষা করা তেমন অর্থপূর্ণ নয়।

, ডেটা স্ট্রাকচারগুলিতে জ্ঞান না থাকা কি আসলেই প্রোগ্রামিংয়ে নিজের ক্যারিয়ারকে প্রভাবিত করে?

হ্যাঁ. স্পষ্টভাবে. আপনি যতক্ষণ না আপনার সমস্ত জীবন CRUD অ্যাপ্লিকেশন লেখার জন্য ব্যয় করতে চান।

বা এই বিষয়টির জ্ঞানটি কি কোনও ভাল এবং খারাপ প্রোগ্রামারকে আলাদা করার পক্ষে যথেষ্ট ভিত্তি?

না, এটি যথেষ্ট নয়। তবে চাকরীর সাক্ষাত্কারে আপনি কিছু জিজ্ঞাসা করতে পারেন যা যথেষ্ট। এবং আমি বলব অ্যালগরিদম জ্ঞান সবচেয়ে ভাল সূচকগুলির মধ্যে একটি, কমপক্ষে স্কুল থেকে সতেজ হওয়া লোকদের জন্য, যেখানে আপনি কাজের অভিজ্ঞতা সম্পর্কে জিজ্ঞাসা করতে পারবেন না।


একটু নীটপিক, আমি বলব না ডেটাস্ট্রাকচারগুলি প্রতি সেমে সময়সীমার। আজকের হার্ডওয়্যারগুলির সাথে সমস্যাগুলি সমাধান করার জন্য প্রচুর কাঠামো মডেল করা হয়। উদাহরণস্বরূপ আমরা ফাইল পৃষ্ঠাগুলিতে অনুসন্ধানের অনুকূলকরণের জন্য একটি বি + ট্রি ব্যবহার করি তবে অন্তর্নিহিত হার্ডওয়্যার পরিবর্তন হচ্ছে। সম্ভবত এসএসডি'র জন্য বিভিন্ন অ্যালগরিদমের প্রয়োজন হতে পারে, বা যেখানে ডিস্ক আইও-র চেয়ে র‌্যাম অ্যাক্সেসের দিকে আরও বেশি সরানো হবে। সুতরাং যদিও নিজের মধ্যে অ্যালগরিদমটি "কালজয়ী" হতে পারে এটির জায়গা এবং উদ্দেশ্যটি নয়
হোমডে

3
@ কনরাড: "ব্যবহারিক উদ্দেশ্যে" বলতে আমি এটাই বুঝি। আমি কোনও ডেটা স্ট্রাকচার বা অ্যালগরিদম যা "অপ্রচলিত" হয়ে উঠতে পারি তা ভাবতে পারি না এবং আমি সন্দেহ করি যে আপনি কোনও কাজের সাক্ষাত্কারে এসে পৌঁছবেন। এবং যেহেতু বেশিরভাগ অ্যালগরিদম / ডেটা স্ট্রাকচারগুলি আমাদের বর্তমান হার্ডওয়্যারের অনেক আগে তৈরি হয়েছিল এবং এখনও কার্যকর, তাই আমি এমনকি অনুমান করতে পারি যে এখানে কোনও ধরণের কোয়েভোলশন চলছে, যেখানে নতুন হার্ডওয়্যার বিকাশগুলি আমাদের জানা ডেটা স্ট্রাকচার দ্বারা পরিচালিত হয়।
নিকি

যদি / যখন
চুক্তিটি

9
@ কনরাড: এবং / যখন কোয়ান্টাম কম্পিউটারগুলি স্ট্যান্ডার্ড হয়ে যায়, আমি আরও কয়েকটি সম্পর্কে ভাবতে পারি। তবে আমি ধরে নিই যে ওপি তার চাকরির সাক্ষাত্কারগুলি নিয়ে ততক্ষণ অপেক্ষা করতে চায় না ;-)
নিকি

3
... বা যখন আমাদের নতুন এআই ওভারলর্ডরা
শঙ্কিত

45

আমি দ্রুত শিখি এবং আমি খুব অল্প সময়ের মধ্যেই নতুন ফ্রেমওয়ার্ক, এপিআই বা এমনকি প্রোগ্রামিং ভাষা শিখতে পারি।

খুব কঠোর শোনার জন্য নয়, তবে যে কোনও অর্ধ-শালীন বিকাশকারী তুলনামূলকভাবে স্বল্প সময়ের মধ্যে একটি নতুন ভাষা বা কাঠামো বেছে নিতে সক্ষম হবে।

ডেটা স্ট্রাকচারগুলি সর্বজনীন, এটি কম্পিউটার বিজ্ঞানের একটি মৌলিক বিল্ডিং ব্লক - একটি লাল-কালো গাছ মূলত একই, এটি জাভা, পাইথন, পিএইচপি বা যাই হোক না কেন বাস্তবায়িত হোক না কেন। সুতরাং নির্দিষ্ট ভাষা বা নির্দিষ্ট ফ্রেমওয়ার্কগুলি পরীক্ষা না করে, কোনও নিয়োগকর্তা (কমপক্ষে, কোনও নিয়োগকর্তা স্ট্যান্ড আউট বিকাশকারীদের সন্ধান করছেন) পরীক্ষা করবেন যে আপনি কম্পিউটার বিজ্ঞানের মৌলিক বিষয়গুলি জানেন কিনা , কেবল মাসিকের যে-কোনও স্বাদই নয় ' বর্তমানে ব্যবহার করছি।

(কমপক্ষে, তারা বর্তমানে যা ব্যবহার করছে তা ছাড়াও তাদের মৌলিক বিষয়গুলি পরীক্ষা করা উচিত ... কম্পিউটার-বিজ্ঞান উইজার্ডকে নিয়োগের কোনও মানে নেই যদি তিনি তার জীবনে কোনও কোডের লাইন না লিখে থাকেন)


1
কম্পিউটার বিজ্ঞান এখানে অন্যতম কীওয়ার্ড। ডেটা স্ট্রাকচারগুলি সাধারণত কোনও মাস্টার্সের মধ্যে গভীরতার সাথে দেখা হয় এবং স্পষ্টতই এটি একটি গুরুত্বপূর্ণ বিষয়।
জেমস পি।

1
আপনি সম্পূর্ণরূপে কার্যকরী প্রোগ্রামিংয়ে আবদ্ধ না হওয়া অবধি ডেটা স্ট্রাকচারগুলি সর্বজনীন: পি।
টিখন জেলভিস

30

আপনি যদি মনে করেন যে, এফ 1 রেসার শুধু ড্রাইভ দ্রুত গাড়ি? না, তারা যে গাড়িটি চালায় তা তারা বোঝে এবং তারা সুর করার জন্য তারা যান্ত্রিক / প্রকৌশলীদের সাথে কাজ করে। অবশ্যই, একটি সাধারণ ড্রাইভার কেবল চালনা করে।

আপনি একটি সাধারণ / গড় প্রোগ্রামার হতে পারেন যা কেবল কোড লেখেন । তুমি কি বুঝতে পারছ না এর পিছনে কি আছে। আপনি কাজ শেষ। ঠিক আছে, পরের দিন দেখা হবে।

তবে অনেক সংস্থা এফ 1 বিকাশকারীদের সন্ধান করে। যে লোকেরা তাদের কোডের পিছনে কী তা জেনে বিকাশ করবে। এমন লোকেরা যে সংস্থাকে আরও ভাল কিছু তৈরি করতে সহায়তা করবে।

ডেটা স্ট্রাকচারগুলি জানা খুব ভাল কারণ আপনি এগুলি একটি "প্রাক রান্না করা" আকারে ব্যবহার করবেন। এটিও ভাল কারণ আপনি এমন কিছু তৈরি করবেন যা তাদের ধারণা থেকে উদ্ভূত।



সুতরাং অপেক্ষা করুন, আপনি কি বলছেন যে আমার প্রোগ্রামার হওয়ার সাথে একটি সম্পর্ক আছে এবং গাড়ি চালানোর আগে আমার ঘনিষ্ঠভাবে জানতে আগ্রহী অভ্যাসের অভ্যাস?
রবি

@ রবি: +1 এলএল আপনি কি জিনিসগুলি ছড়িয়ে দিতে পছন্দ করেন?
গ্রাফিক

2
হা. আমার বাবা আমাকে শিখিয়েছিলেন যে কীভাবে কিছু আলাদা রাখবেন। কীভাবে জিনিসগুলিকে একসাথে রাখা যায় সে সম্পর্কে তিনি আমাকে শিক্ষা দিতে অবহেলা করেছিলেন এবং তা সারা জীবন ধরে খুঁজে পেয়েছিলেন।
রবি

17

ডেটা স্ট্রাকচার সম্পর্কিত আমার ক্লাসে, প্রফেসর যে প্রথম কথাটি বলেছিলেন তা হল: এই শ্রেণিটি সত্যিই দ্রুত অনুসন্ধান করতে সক্ষম হবে না। এরপরে আমরা সত্যিই দ্রুত অনুসন্ধানের জন্য সর্বোত্তম সম্ভাব্য ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলি সন্ধান করার জন্য অর্ধেক বছর ব্যয় করেছি।

তবুও, তিনি ঠিক রয়েছেন। ডেটা স্ট্রাকচার বিশ্লেষণ করতে সক্ষম হওয়া, কোনও নির্দিষ্ট সমস্যার ক্ষেত্রে সঠিক ডেটা স্ট্রাকচার প্রয়োগ করুন বা নতুন ডেটা স্ট্রাকচার নিয়ে আসতে একজন ইঞ্জিনিয়ারের অনেক গুণাবলীর প্রয়োজন:

  • একটি কংক্রিট সমস্যার মডেল করতে বিমূর্ততা সন্ধান করা
  • সমস্যাগুলি পচন করতে সক্ষম হওয়া
  • যৌক্তিক / আনুষ্ঠানিকভাবে যুক্তি অর্জনে সক্ষম হওয়া
  • সৃজনশীলতা
  • প্রভৃতি

যখন অ্যামাজন এবং মাইক্রোসফ্ট লোকদের ভাড়া করে, তারা ডেটা স্ট্রাকচারের বিষয়ে প্রশ্ন জিজ্ঞাসা করে না কারণ তারা আশা করে যে পরবর্তী কোকোর্টটি আবিষ্কার করবে । তারা নিশ্চিত করতে চায় যে তারা উল্লিখিত গুণাবলী সহ কাউকে নিয়োগ দেয়।

অবশ্যই এই গুণাবলীর একটি বৃহত সেট থাকা এবং এখনও ডেটা স্ট্রাকচারকে স্তন্যপান করা সম্ভব। তবে, যদি এটি হয় তবে ডেটা স্ট্রাকচারের বিশেষজ্ঞ হতে আপনার বেশি সময় লাগবে না।


বলা হচ্ছে, এখনও সমস্যা রয়েছে যা ArrayListকেবলমাত্র যথেষ্ট পরিমাণে হয় না। সিস্টেমগুলি বড় হয়ে গেলে, কাজটি সম্পাদনের জন্য আরও ভাল অভিযোজিত সমাধানের প্রয়োজন হয়। এবং ডেটা স্ট্রাকচারের ভাল উপলব্ধি ব্যতীত আপনি আপনার কংক্রিটের দৃশ্যে বড় আকারের স্ট্রাকচার এবং অ্যালগরিদমগুলি সন্ধান করতে এবং রচনা করতে সক্ষম হবেন না।


3
আর সংক্রান্ত ArrayList, ডাটা স্ট্রাকচার একটি ভাল উপলব্ধিকে ছাড়া আপনি এমনকি নাও হতে পারে বুঝতে পারছি যে ArrayListপুরোপুরি স্কেল করে এবং আপনাকে খুঁজে পেতে এবং কাঠামো এবং আলগোরিদিম যে স্কেল রচনা করতে হবে।
ফুগ

12

সাধারণত অ্যালগরিদম এবং ডেটা স্ট্রাকচারগুলিকে প্রোগ্রামিংয়ের ক্ষেত্রে দুটি "হার্ড কোর" বিষয় হিসাবে বিবেচনা করা হয়। এটি কারণ কম্পিউটার বিজ্ঞানের বিষয়ে তাদের সম্পর্কিত অনেক কাজ এবং গবেষণা রয়েছে। তারা সাধারণ "বাম-লব" -প্রগ্রামারগুলিকেও আকর্ষণ করে যা গণিত এবং বিজ্ঞানের মতো জিনিস পছন্দ করে (যা পুরো প্রোগ্রামারদের মতো)

বলা হচ্ছে, এগুলির জ্ঞান আপনার ক্যারিয়ারকে সাক্ষাত্কারের ক্ষেত্রে প্রভাবিত করতে পারে, বিশেষত আপনি যদি গুগলের মতো ইঞ্জিনিয়ারিং-ভিত্তিক কর্মক্ষেত্রে সাক্ষাত্কার করেন। অন্যান্য সংস্থাগুলি এখন অবশ্য সেই দিকটি যত্নশীল হতে পারে।

আমার অভিজ্ঞতায় অ্যালগরিদম / ডেটা কাঠামোর চাহিদা কখনও কখনও "প্রোগ্রামার এলিটিজম" হিসাবে উপস্থিত হতে পারে যেখানে আলফা গিকগুলি হুস্ট করে কে দেখায় যে সবচেয়ে স্মার্ট। কী আছে তা জানার জন্য এটি সর্বদা ভাল, তবে প্রচুর বিবিধ প্রোগ্রামিং কাজ রয়েছে যেখানে আপনাকে কখনই কোনও লাল / কালো গাছ ব্যবহার করতে হবে বা বায়ার-মুর অনুসন্ধানের কোড কীভাবে ব্যবহার করতে হবে তা জানতে হবে না।

আমি বিষয়গুলি সম্পর্কে আরও জানার পরামর্শ দিচ্ছি যদি আপনি তাদের আকর্ষণীয় বলে মনে করেন এবং এমন কোনও ব্যক্তিগত প্রকল্প তৈরি করেছেন যেখানে আপনি তাদের সাথে টিঙ্কার করতে পারেন, অন্যথায় আপনি সম্ভবত আপাতত এগুলি ছাড়া পেতে পারেন

গীত। প্রাথমিক ডেটা স্ট্রাকচারের সাথে দক্ষতা (লিঙ্কযুক্ত তালিকাগুলি, অভিধান, হ্যাশ টেবিল ইত্যাদি) যে কোনও প্রোগ্রামার ডিএসের জন্য একটি বাধ্যতামূলক জ্ঞান হওয়া উচিত।


7

সুতরাং সত্যিই কেন ডেটা স্ট্রাকচারের উপর এই সমস্ত জোর?

দুটি কারণ।

একটি জিনিসের জন্য, এটি দেখায় যে আপনি নির্দিষ্ট প্রোগ্রামিং ভাষার পরিবর্তে বিমূর্ত পদগুলিতে সমস্যাটি সম্পর্কে ভাবতে পারেন। আপনি কি জানেন যে অন্তর্নিহিত বাস্তবায়ন নির্বিশেষে কোনও হ্যাশ টেবিল কোনও প্রদত্ত পরিস্থিতিতে লাল-কালো গাছের চেয়ে ভাল বা খারাপ পছন্দ হতে পারে কেন?

অন্যের জন্য, এমন একটি ভীতিকর সংখ্যক লোক রয়েছে এমন চাকরির জন্য সাক্ষাত্কারের জন্য যারা কেবল তাদের অভিজ্ঞতা সম্পর্কে মিথ্যা বলে এবং যদি কোনও প্রোগ্রামিং দক্ষতা থাকে তবে খুব কম থাকে; ডেটা স্ট্রাকচার প্রশ্নগুলি হ'ল এই লোকগুলিকে নিড়ানোর এক দ্রুত উপায়।


আমি এখানে একটি মতামত উপস্থাপন করতে যাচ্ছি সম্ভবত এটি বিতর্কিত হতে পারে। কেন একটি ডেটা স্ট্রাকচার বা অন্য কোনওটি দক্ষতা এবং কার্য সম্পাদনের দিকে ঝুঁকছেন The আমরা বিকাশকারীদের কী না করতে বলি? অকালে অপ্টিমাইজ করা হয় না! আপনি যদি প্রোফাইলের মাধ্যমে জানেন না যে ডেটা কাঠামোর পছন্দ পারফরম্যান্সে সমস্যা সৃষ্টি করে, 'ডান' বাছাই করা আপনার সাথে পরিচিত। অন্য কোনও সিদ্ধান্ত অকালীন অপ্টিমাইজেশান, এবং তাই মন্দ!
টম ডাব্লু

2
কর্মক্ষমতা বৈশিষ্ট্য অধিকার ডাটা স্ট্রাকচার অবচয় সামনে প্রযোজ্যতা উপর ভিত্তি করে এবং প্রত্যাশিত অন্তর্নিহিত বাস্তবায়ন স্বাধীনভাবে হয় না অকাল অপ্টিমাইজেশান একটি উদাহরণ।
জন বোদে

বাইনারি হ্যাপের ওপরে ফিবোনাচি হিপ বাছাই করা যায়। হিপ বনাম তালিকা ব্যবহার করা (যখন হিপ উপযুক্ত হয়) না।
ব্যবহারকারী470365

5

এগুলি মৌলিক, তবে আপনি কি স্নাতকদের স্নাতকোত্তর করবেন? তাদের কোর্স কাজের বাইরে অভিজ্ঞতা থাকতে পারে বা নাও থাকতে পারে। তাদের কোর্সে জাভা বা তার বিপরীতে মাইক্রোসফ্ট প্রযুক্তিগুলি বেশি coveredেকে থাকতে পারে। ডেটা স্ট্রাকচারগুলি সাধারণ ভিত্তি।


আপনি কী বিষয়ে স্নাতকোত্তরদের ক্যুইজ করতে চান তা +1 করার জন্য, কারণ সমস্ত কমপ্লেক্স সায়ার গ্রাজুয়েটদের জানা উচিত যে আপনিও জানেন।
ইয়ান

4

প্রায়শই সময় সেরা কোড নিম্ন স্তরের ডেটা স্ট্রাকচার পুনরায় উদ্ভাবন করা এড়ানো হয়। উচ্চ স্তরের ভাষাগুলিতে এটি বিশেষভাবে সত্য। আমি CRUD চাকরিতে এমনকি নিম্ন স্তরের ডেটা স্ট্রাকচার প্রশ্নগুলির দিকে ঝোঁক লক্ষ্য করেছি। ওয়াইএমএমভি, তবে মনে হচ্ছে হ্যাকার বিজ্ঞানী দক্ষতার উপর জোর দেওয়া অন্যান্য দক্ষতাগুলিকে ছড়িয়ে দিয়েছে যা একজন দুর্দান্ত বিকাশকারীকে তোলে:

  • প্রকল্প / সময় পরিচালনা: ব্যবসায়ের দ্বারা পরিচালিত প্রকৃত বিশ্বের সাথে তাল মিলিয়ে রাখতে সক্ষম হওয়া, 1% দ্রুত পরিচালিত কোনও নতুন লিঙ্কযুক্ত তালিকা নয়।
  • ন্যূনতম পরিমাণে সামাজিক দক্ষতা: এমন বিকাশকারী যা অহংকার করে এবং সাথে যেতে পারে না এটি অ্যাঙ্কর ছাড়া কিছুই নয়।
  • দ্রুত এবং অবিচ্ছিন্নভাবে নতুন জিনিস শেখার ক্ষমতা: বছরের পর বছরগুলিতে ডেটা স্ট্রাকচার খুব কমই বদলে যায় ... তবে অন্য সব কিছুই ঘটে। ডেটা স্ট্রাকচারগুলি দুর্দান্ত ফান্ডামেন্টাল এবং প্রতিটি বিকাশকারীদের সেগুলি বেশ ভালভাবে জানা উচিত, তবে কোনও অ্যাকাউন্টেন্টেন্ট যখন তাদের কোনও সাক্ষাত্কারের জন্য যায় তখন তাদের দীর্ঘ বিভাগ দক্ষতার পরীক্ষা করা হয় না। দুর্দান্ত বিকাশকারীরা হলেন সেই ধরণের লোক যা নতুন জিনিস খুঁজে বের করতে এবং এটি পছন্দ করতে পারে।

ডেটা স্ট্রাকচার দুর্দান্ত। ডেটা স্ট্রাকচার গুরুত্বপূর্ণ। প্রতিটি প্রোগ্রামারকে তাদের বোঝা উচিত। যাইহোক, আমরা এই মৌলিকগুলি তাদের জায়গার বাইরে ঠেলাঠেলি করতে বাধ্য হয়ে পড়েছি। এটি ডেটা স্ট্রাকচার সম্পর্কে সমস্ত কিছু নয় এবং 99% ক্ষেত্রে ডেটা স্ট্রাকচারের বেসিকগুলির বাইরে প্রশ্ন জিজ্ঞাসা করার প্রয়োজন নেই। আপনি যদি কোনও অ্যাকাউন্টেন্টের সাক্ষাত্কার নিচ্ছেন তবে অবশ্যই 9 টি দিয়ে ভাগ করে 81 নিয়ে জিজ্ঞাসা করুন তবে আপনি যদি জিজ্ঞাসা করতে থাকেন যে 98825454242412 * 4512324 এর কিউব মূল কি? ... কোনও ক্যালকুলেটর ছাড়াই! তারপরে আপনি যে যুক্তিসঙ্গত, স্মার্ট, মেধাবী এবং সম্মতিযুক্ত লোকদের থাকতে পারতেন তার একটি ভাল শতাংশ আপনি ভীতি প্রদর্শন করবেন। তারা যদি কোনও প্রাথমিক সম্পর্কযুক্ত ডেটা মডেল তৈরি করতে পারে তবে জিজ্ঞাসা করুন, তারা কি প্রাসঙ্গিক কাঠামোর দ্বারা সরবরাহিত বর্ধিত অ্যারে কাঠামো ব্যবহার করতে পারে কিনা তা জিজ্ঞাসা করুন, এবং জিজ্ঞাসা করুন যে কোনও বাইনারি অনুসন্ধান ফ্ল্যাট অনুসন্ধানের চেয়ে দ্রুত যখন তারা ব্যাখ্যা করতে পারে, তবে এর থেকে বেশি দূরে যাওয়ার খুব বেশি কোনও পয়েন্ট নেই। যদি তারা এই জিনিসগুলি করতে পারে তবে সর্বোত্তম, সবচেয়ে পেশাদার, সবচেয়ে সৃজনশীল গুচ্ছের সন্ধান করুন one

আমি জোলের লেখা পছন্দ করি তবে আমার মনে হয় তাঁর "জাভা স্কুল" জিনিসটি মৃত ভুল। প্রচুর পরিমাণে জিনিস রয়েছে যা প্রমাণ করতে পারে যে কেউ সি ++ এর উপর দক্ষতা অর্জনের বাইরে smart এটি সম্পর্কে চিন্তা করুন, আপনি 10 মিনিটের জন্য কারও সাথে পয়েন্টার গাণিতিক সম্পর্কে জিজ্ঞাসা না করে কথা বলতে পারেন, এবং তারা যে কাজটি করতে পারে এবং জিনিসগুলি বের করে দিতে পারে সে ধরণের কিনা তা সম্পর্কে খুব ভাল ধারণা পাওয়া যায়। আমাদের এর মতো হওয়ার দরকার নেই:

সাক্ষাত্কার: "আপনার অর্জন সম্পর্কে আমাকে বলুন।"

কোডার: "আমার শেষ অবস্থানে আমি এক বিলিয়ন ডলারের আর্থিক সংস্থার জন্য কাস্টম ইআরপি সিস্টেমের একমাত্র বিকাশকারী ছিলাম schedule আমরা সময়সূচির আগে কয়েক মাস আগে পৌঁছে দিয়েছিলাম, এবং বিগত ৩ বছর ধরে এই সিস্টেমটির উত্পাদন চলছে" "

সাক্ষাত্কার: "আমাকে স্পষ্ট করতে দাও। আপনার প্রোগ্রামিং কৃতিত্ব সম্পর্কে আমাকে বলুন "

কোডার: "উম্ম ..."

সাক্ষাত্কার: "উদাহরণস্বরূপ, আপনি কি কখনও নিজের লিঙ্কযুক্ত তালিকা তৈরি করেছেন?"

কোডার: "... [হাঁটতে]]"


আকর্ষণীয় - ভাল তালিকা। এটির দিকে কিছুটা আলাদা চেহারা কেমন? ১. প্রকল্প / সময় পরিচালন: এমনভাবে জিনিস প্রস্তুত করতে সক্ষম হওয়া যাতে ডেটা স্ট্রাকচারগুলি সাক্ষাত্কারের সামান্য অংশ নষ্ট করে। ২. ন্যূনতম পরিমাণে সামাজিক দক্ষতা: এমন একটি বিকাশকারী যা বুঝতে সক্ষম হন যে সাধারণত ইন্টারভিউয়াররা আরও আকর্ষণীয় ক্ষেত্রগুলিতে যাওয়ার আগে কেবলমাত্র প্রাথমিক ডাটা স্ট্রাকচারগুলি দ্রুত পরীক্ষা করতে চান। ৩. ডেটা স্ট্রাকচারের বেসিকগুলির জ্ঞানের অভাবের কারণ হতে পারে এমন কোনও বিঘ্ন ছাড়াই দ্রুত এবং অবিচ্ছিন্নভাবে নতুন জিনিস শেখার ক্ষমতা
gnat

@ গ্যাनेट - এটিও বেশ ভাল। আমি অনুমান করি যে আমি যা পাচ্ছি তা হ'ল মৌলিক বিষয়গুলির সর্বাধিক গভীরতা উপলব্ধি একটি নির্দিষ্ট পয়েন্টের অতীত সামগ্রিক সক্ষমতার সাথে কথা বলে না, তবে এর বিপরীতে অনুমান করার প্রবণতা রয়েছে। ডেটা স্ট্রাকচার এমন একটি জিনিস যা বেশিরভাগ লোক অন্য কারও দ্বারা (সাধারণত একটি শিক্ষক) শিখিয়ে তোলে। তারা নিজেরাই তারা কী শিখতে পারে তা জানতে চাই, কারণ আসল পৃথিবী এভাবেই কাজ করে। ভাল প্রোগ্রামাররা সর্বোত্তম অনুশীলনের উপর ভিত্তি করে যুক্তিসঙ্গত সিস্টেমগুলি ডিজাইন করতে পারে। দুর্দান্ত প্রোগ্রামাররা সবচেয়ে খারাপ অভ্যাস ব্যবহার করে ভয়াবহ প্রোগ্রামারদের দ্বারা লেখা পাগল সিস্টেমগুলি শিখতে এবং তাদের কাজ করতে পারে।
মরগান হের্লোকার

1
আমি অনুমান করতে পারি যে যে লোকটি ইআরপি সিস্টেমে কাজ করেছিল সে দলের পক্ষে উপযুক্ত নয়।
ক্রিস্টোফার মহান

4

একটি ভাল প্রোগ্রামার হওয়া ভাষা এবং ফ্রেমওয়ার্ক শেখার পক্ষে সক্ষম নয়। এটি জটিল সমস্যার সমাধান তৈরি করতে সক্ষম হওয়া সম্পর্কে। এই সমাধানগুলি দক্ষ ও নির্ভরযোগ্য হওয়ার জন্য প্রায়শই ভাল অ্যালগরিদম এবং ডেটা স্ট্রাকচারের যথাযথ ব্যবহারের উপর নির্ভর করে। ডেটা স্ট্রাকচারের উপস্থিতি জানা যথেষ্ট নয়। সমস্যার কাঠামোগুলি সঠিকভাবে ব্যবহারের জন্য আপনার ডাটা স্ট্রাকচারগুলি যথেষ্ট বুঝতে হবে। তালিকা এবং মানচিত্রগুলি কিছু মূল্যবান বৈশিষ্ট্য সরবরাহ করে তবে এগুলি ব্যয় করে আসে এবং ভুলটিকে ব্যবহার করে আপনার সফ্টওয়্যারটির কার্যকারিতা উল্লেখযোগ্যভাবে হ্রাস করতে পারে।

একজন ভাল সাক্ষাত্কারকারী এটি জানেন এবং আপনি তার দল বা সংস্থার কাছে মূল্যবান হতে পারেন কিনা তা নির্ধারণের চেষ্টা করছেন। আপনি এখন থেকে 2 বছর ব্যবহার করছেন ভাষা (গুলি) খুব আলাদা হতে পারে তবে কার্যকর অ্যালগরিদম এবং ডেটা স্ট্রাকচারের প্রয়োজন পরিবর্তন হবে না।


2

ডেটা স্ট্রাকচার, সময়ের জটিলতা, মেমরি হেরফের এবং পয়েন্টারগুলি এমন সমস্ত মৌলিক বিষয় যা যিনি নিজেকে কম্পিউটার বিজ্ঞানী হিসাবে অভিহিত করেন তাদের জন্মগতভাবে জানা উচিত। যে কোনও কোড বানর একটি ভাষা শিখতে এবং এটি কীভাবে ব্যবহার করতে হয় তা শিখতে পারে, তবে সিএস পেশাদাররা এবং শিক্ষার্থীদের যেখানে নিজেকে আলাদা করা উচিত কেবল কীভাবে কোনও লিঙ্কযুক্ত তালিকা বা হ্যাশ মানচিত্র ব্যবহার করবেন তা নয়, তবে কেন knowing

মূলত লিপি স্ক্রিপ্ট কিডি, কোড বানর এবং কম্পিউটিং ওয়ার্ল্ডের গ্রান্টকে বাদ দিয়ে সত্যই আমাদের সকলকে সেট করে। কেন কোনও লিঙ্কযুক্ত তালিকার পরিবর্তে হ্যাশ টেবিল ব্যবহার করা হয়, আমার হ্যাশ টেবিলটি প্রায় .6-.8 এর ক্লাস্টারের ঘনত্বের কেন হওয়া উচিত, কেন দ্বিগুণ সংযুক্ত তালিকার পরিবর্তে আমি এখানে বৃত্তাকার যুক্ত লিঙ্কটি ব্যবহার করব। আমার কোডটি সবচেয়ে খারাপ ক্ষেত্রে দক্ষতার 'x' এবং গড় ক্ষেত্রে 'y' কেন চালানো উচিত।

এই বেসিক ডেটা স্ট্রাকচার এবং জ্ঞান যে তারা কীভাবে ব্যবহৃত হয় (যেভাবেই হোক না কেন প্রতিটি প্রোগ্রামারগুলিতে পুনরায় লেখার উপস্থাপনা করা উচিত) তবে তারা যে ভাষা ব্যবহার করে তা অজ্ঞাবলিক ভাষায় দেখা যায়, যা তারা এই ক্ষেত্রে যা খুঁজছেন তার চেয়ে বেশি হয়ে থাকে।

অনেক জায়গাগুলি আপনাকে এমন একটি ভাষায় কোড লিখতে বাধ্য করবে যা আপনি জানেন তবে এটি একটি সাধারণতার চেয়ে বেশি, কারণ সি হিসাবে দেখা আসলেই আর প্রোগ্রামিং জগতের লঙ্গুয়া ফ্রেঙ্ক নয়, এবং সিউডো কোডটি কাঠামো মিশ্র্যাশ এবং সমস্ত হতে পারে জায়গা জুড়ে এবং বেশিরভাগ ক্ষেত্রে সিউডো কোড / পি & পি কোড সহ সত্যই শেখানো হচ্ছে না, ডিল করা ঠিকই অসম্ভব।


0

ডেটা স্ট্রাকচারগুলি সমস্ত প্রোগ্রামের মৌলিক ভিত্তি। অগত্যা আপনার এগুলি সম্পর্কে গভীর বোঝার দরকার নেই তবে তারা কীভাবে কাজ করে তা আপনাকে অবশ্যই জেনে রাখা উচিত।

কেন? কারণ আপনার সমস্ত কোড ডেটার সাথে ইন্টারঅ্যাক্ট করে এবং হেরফের করে। যদি ডেটা সেটটি কোনও কাঠামোর মধ্যে সংরক্ষণ করা না যায়, তবে এটি ব্যবহার করা যাবে না। ডেটা কোনও বাড়ির বিল্ডিং উপকরণগুলির মতো। যতক্ষণ না আপনি এটিকে এক কাঠামোর সাথে একত্রে রাখেন, আপনার কাছে কেবল বোর্ডের অকেজো pੇਰ রয়েছে।

একবার আপনি কিভাবে সম্পর্কে চিন্তা এবং আপনার ডেটা সেট সংজ্ঞায়িত করতে উপর সিদ্ধান্ত নিয়েছি, তারপর আপনি এটি ব্যবহার জিনিস, মানিকজোড় ক্লাসিক অ্যালগরিদম অংশ করতে শুরু করতে পারেন। আপনার লেখা প্রতিটি একক প্রোগ্রাম একটি ডেটা স্ট্রাকচার ব্যবহার করে, যদিও অনেক ক্ষেত্রে এই কাঠামোটি এতটা সরল যেমন প্রায় অস্তিত্ব নেই। রাষ্ট্রের ডেটাগুলির জন্য কয়েকটি ভেরিয়েবল এবং আমাদের কাজ শেষ!

আপনি একবার তুচ্ছ প্রোগ্রামের বাইরে চলে গেলে প্রায় প্রতিটি কিছুর জন্য ডেটা স্ট্রাকচার প্রয়োজন। আপনি কোনটি পছন্দ করবেন, এমন একজন পেশাদার স্থপতি যিনি আপনার আকাশচুম্বী নকশাটি সর্বোত্তম অনুশীলন এবং গণিতের সাথে ডিজাইন করেন, বা কাকা জো বব অবিলম্বে নির্মাণ শুরু করেন?


-2

@ পেলশফ যা বলছেন তা বানাতে এটি দেখাতে হবে যে আপনি কী করছেন তা আপনি জানেন। যদি আপনি সমস্ত কিছুর জন্য একটি লিঙ্কলিস্ট ব্যবহার করেন তবে এটি আপনাকে দেখায় যে আপনি কী করছেন তা জানেন না বা সমস্যাটি থামানোর এবং চিন্তাভাবনা করার কোনও যত্ন নেই show তার উপরে, আমি অন্তত ডেটা স্ট্রাকচার কোর্সটি কভার করেছি, সেই ডেটা স্ট্রাকচারগুলির বুনিয়াদী, জটিলতার তত্ত্ব যা বড় ডেটা সেটগুলির সাথে কাজ করার সময় খুব গুরুত্বপূর্ণ। এজন্যই অ্যামাজন বা মাইক্রোসফ্টের মতো সংস্থাগুলি এ জাতীয় কাজ করবে।

আমাকে অবশ্যই বলতে হবে, আমি একটি ডেটা স্ট্রাকচার ক্লাস নেওয়ার আগে আমি ভেবেছিলাম যে সেগুলি গুরুত্বপূর্ণ নয় তবে কমপক্ষে কোনও লিঙ্কযুক্ত তালিকা (বা অ্যারেলিস্ট) ব্যবহারিক না হলে বা এর আঁকার ব্যাকটি কী গুরুত্বপূর্ণ তা কমপক্ষে পুনঃসংযোগ করতে সক্ষম হব।


"আপনি যদি সমস্ত কিছুর জন্য একটি লিঙ্কলিস্ট ব্যবহার করেন, এটি আপনাকে দেখায় যে আপনি কী করছেন জানেন না" বা আপনি একটি লিস্প প্রোগ্রামার :-)
পিটার আলেকজান্ডার

@ পিটার - যা আমার বক্তব্য প্রমাণ করবে আপনি কি জানেন না আপনি কি করছেন! ;)
জেটি

এটি মুছে ফেলা উত্তরের একটি মৃত লিঙ্কের উপর ভিত্তি করে বলে মনে হচ্ছে - পাঠকদের জন্য বেশ বিভ্রান্তিকর। এই যত্ন নিতে আপনি কি সম্পাদনা করতে আপত্তি করবেন ?
gnat

-2

আপনি ভাল কোড লিখুন বা না করুন এটি একটি বিষয়গত বক্তব্য। এটি জেনে রাখা গুরুত্বপূর্ণ যে কার্যকরী কোড সর্বদা ভাল কোড তৈরি করে না।

এটি বলেছিল, ডেটা স্ট্রাকচারগুলি গুরুত্বপূর্ণ কারণ তারা প্রোগ্রামার হিসাবে আপনি যে পর্দার পিছনে কর্মীদের পরিচালনা করছেন তার মতো। এটি সত্য যে আপনি কোনও স্ট্রাকচারের পদ্ধতিগুলি কীভাবে তা না করে তা কল্পনা করতে পারেন এবং ডেটা কীভাবে সংরক্ষণ করা হয় তা না পেয়ে আপনি কোনও কাঠামো ব্যবহার করতে পারেন, তবে এই বিবরণগুলি জানার পরে আপনি যখন কোনও কাঠামো ব্যবহার করার উপযুক্ত তখন এটি বুঝতে আরও প্রস্তুত হবেন অন্য।

উদাহরণস্বরূপ, এটি জেনে রাখা যে আপনি দ্বিগুণ-সংযুক্ত তালিকার মাধ্যমে উভয় দিকের দিকে যেতে পারেন এবং কেবলমাত্র একক লিঙ্কযুক্ত তালিকার মাধ্যমে ফরোয়ার্ডগুলি ডেটা সঞ্চয় করার সময় কোন কাঠামো গুরুত্বপূর্ণ তা নির্ধারণে আপনাকে সহায়তা করতে পারে। আপনি এককভাবে সংযুক্ত তালিকার মেমরির ব্যবহারের ক্ষেত্রে কম ওভারহেড থাকতে পারে তা জেনে আরও বেশি সিদ্ধান্ত নিতে পারেন (যেহেতু এটিতে পূর্ববর্তী উপাদানগুলির মধ্যে পয়েন্টার নেই) তাই, যদি আপনাকে কেবল একটি তালিকার মাধ্যমে এগিয়ে যেতে হয়, আপনি উপযুক্ত কাঠামো ব্যবহার করে কিছু স্মৃতি সঞ্চয় করতে পারেন।

এগুলি কেবলমাত্র ছোট উদাহরণ এবং শেষ পর্যন্ত, যদি আপনি মনে করেন যে আপনি ডেটা স্ট্রাকচারের অন্তরঙ্গ জ্ঞান ছাড়াই আপনার ক্যারিয়ারে ভাল করছেন তবে সম্ভবত আপনার আরও কিছু শেখার দরকার নেই। হুডের নীচে কী চলছে তা বোঝা গেলেও কার্যকরী কোডটিকে ভাল কোডে পরিণত করতে সত্যই সহায়তা করতে পারে।


-3

ডেটা স্ট্রাকচারগুলি আপনি করতে চান এমন অনেকগুলি ব্লক তৈরি করছে। যদি আপনি প্রতিটি ডেটা স্ট্রাকচারের ব্যবহারগুলি, এর দুর্বলতা এবং শক্তিশালী পয়েন্টগুলি জানেন তবে আপনি সহজেই সমস্যাগুলি সমাধান করতে পারেন।

উদাহরণস্বরূপ, আমাদের হাজার হাজার অবজেক্ট পরিচালনা করার প্রয়োজন ছিল। প্রতি একবারে একবারে আমাদের আইডি অনুসারে কোনও অবজেক্টের টাইমস্ট্যাম্প আপডেট করতে হবে। প্রতিবার একবারে আমাদের এমন জিনিসগুলি সরিয়ে ফেলতে হবে যা এক্স মিনিটেরও বেশি আপডেট হয়নি।

আপনি যদি নিজের ডেটা স্ট্রাকচারগুলি জানেন তবে আপনি সহজেই সমস্যার সংজ্ঞা দিতে পারেন, এবং এটির সমাধানও খুব সহজ। যখন কোনও প্রোগ্রামার যিনি পর্যাপ্ত ডাটা স্ট্রাকচার জানেন না তারা কোনও সমাধান নিয়ে আসার চেষ্টা করেছিলেন, তখন তার সমাধানটি বিশ্রী হয়ে ওঠে। তিনি আপনার মত ছিলেন - স্মার্ট, কোড প্রোগ্রামার, দ্রুত ফ্রেমওয়ার্ক শিখতে সক্ষম। কিন্তু ডেটা স্ট্রাকচারের জ্ঞান ছাড়াই তাকে নিজেই হুইলটি আবিষ্কার করতে হয়েছিল। তারপরেও - তিনি সহজ সমাধানগুলি বোঝার জন্য কঠিন সময় কাটিয়েছিলেন যেহেতু সেগুলি ডেটা স্ট্রাকচারের ভিত্তিতে ছিল যা তিনি বুঝতে পারেন নি যে লাল-কালো গাছগুলি (জাভাতে আপনার পুরানো ট্রিম্যাপ)।

সুতরাং, আমি বলব যে গুরুত্বপূর্ণ তথ্যটি হ'ল প্রতিটি ডেটা কাঠামো সম্পর্কে কখনই চিন্তা না করে কখন কীভাবে ব্যবহার করতে হয় know তবে আমি মনে করি না যে তারা কীভাবে কাজ করে তা না বুঝেই এটি অর্জনের কোনও উপায় আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.