ফাংশন গ্যারান্টিযুক্ত কখনও একই মান দুবার ফিরে না [বন্ধ]


23

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

আমার ধারণাটি ছিল প্রতিটি মেশিনকে একটি অনন্য আইডি নির্ধারণ করা এবং সেই মানটি অনন্য মান জেনারেটরের ফাংশনে স্থান দেওয়া:

var i = 0;
function uniq(process_id, machine_id) {
   return (i += 1).toString() + machine_id + "-" + process_id;
}

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

সুতরাং যে কেউ এই সমাধানের জন্য অন্য কোনও উপায়ের কথা চিন্তা করতে পারেন যা প্রতিটি মেশিনকে একটি অনন্য আইডি রাখতে কনফিগার করে না? এই প্রশ্নটি আবার যদি আসে তবে আমি উত্তর পেতে চাই। ধন্যবাদ।


31
শব্দের কঠোর অর্থে গ্যারান্টি দেওয়া হয়েছে? আমি বোঝাতে চাইছি, এমনকি গাইডগুলিও এক পর্যায়ে তাদের পুনরাবৃত্তি শুরু করবে। আমরা আর বাঁচতে পারি না, তবে গ্যারান্টি দিচ্ছি .. এবং যাইহোক, কোনও প্রক্রিয়া আইডি অনন্য হওয়া থেকে দূরে
জেনসজি

7
@ কোডসইনচাওস - এটি আপনার ম্যাক ঠিকানা পরিবর্তন করার জন্য কয়েকটি অপারেটিং সিস্টেমে ক্ষুদ্র। এটি একটি মোটামুটি ভয়ানক ধারণা।
টেলাস্টিন

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

28
এটি একটি কৌশল প্রশ্ন ছিল? উদাহরণস্বরূপ, একটি অসীম লুপ সমেত একটি ফাংশন কখনই একই মান দুবার ফেরত দেয় না ...
ব্রেন্ডন

8
সম্ভবত তারা এমন কোনও প্রোগ্রামার সন্ধান করেছিলেন যিনি অনুমান করা এবং এটির সাথে চালানোর পরিবর্তে সন্দেহজনক প্রয়োজনীয়তা সম্পর্কে প্রশ্ন জিজ্ঞাসা করেন :)
দ্য মায়ার

উত্তর:


60

অভিনবতা পাবেন না, কিছু যোগাযোগের শেষ পয়েন্ট (ডাব্লুসিএফ, ওয়েব পরিষেবা, যাই হোক না কেন) এর পিছনে একটি সাধারণ (থ্রেডসেফ) কাউন্টারটি টস করুন:

   long x = long.MinValue;
   public long ID(){
       return Interlocked.Increment(ref x);
   }

হ্যাঁ, এটি শেষ পর্যন্ত উপচে পড়বে। হ্যাঁ, এটি রিবুটগুলি পরিচালনা করে না। হ্যাঁ, এটি এলোমেলো নয়। হ্যাঁ, কেউ একাধিক সার্ভারে এটি চালাতে পারে।

এটি ব্যবহারকারীর প্রয়োজনীয়তাগুলি পূরণ করার জন্য সহজতম জিনিস। তারপরে তাদের সেই সমস্যাগুলিকে অনুসরণ করুন (তারা সীমাবদ্ধতাগুলি বুঝতে পেরেছেন তা নিশ্চিত করার জন্য, তারা কি সত্যই আপনার মনে হয় যে আপনার 2 ^ 64 আইডির বেশি প্রয়োজন), সুতরাং আপনি কী ট্রেড-অফগুলি ঠিক আছে সে সম্পর্কে জিজ্ঞাসা করতে পারেন। এটি কি পুনরায় বুট থেকে বেঁচে থাকার প্রয়োজন? হার্ড ড্রাইভ ব্যর্থতা সম্পর্কে কি? পারমাণবিক যুদ্ধের কী হবে? এটি এলোমেলো করা প্রয়োজন? কেমন এলোমেলো?


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

7
কোডটি যদি বিভিন্ন মেশিনে চালিত হয় (তবে স্পষ্টভাবে বিভিন্ন প্রক্রিয়াতে) কীভাবে কাজ করা উচিত? প্রতিটি প্রক্রিয়াটির আলাদা কপি থাকবে x। এবং আপনার মনে যে ধরণের ইন্টারলকিং মেকানিজম রয়েছে সে সম্পর্কে কোনও ব্যাখ্যা ছাড়াই আমি মনে করি, এই উত্তরটি বেশ অস্পষ্ট।
ডক ব্রাউন

7
@ ডকব্রাউন "একাধিক মেশিনগুলি একযোগে অ্যাক্সেস করেছে" বোঝা যাচ্ছে যে একাধিক মেশিন একক সার্ভারে একক ফাংশনে অ্যাক্সেস করে। অন্যথায় এটি শব্দযুক্ত করা উচিত "একাধিক মেশিনগুলি একই সময়ে এই ফাংশনটির একটি অনুলিপি চালাবে"
ফ্যালকো

3
@ লাইটনেসেসেসিনআরবিট: আমি অনুমান করি এটি সি # এবং System.Threading.Interlockedক্লাস, যা পারমাণবিক বৃদ্ধি প্রদান করে। তবে আপনি এটি কিছু ধরণের সিউডো কোড হিসাবেও পড়তে পারেন।
ডক ব্রাউন

3
যদি আমি জিজ্ঞাসা করা ব্যক্তি হয়ে থাকি তবে আমি এই প্রস্তাবটিতে খুব অসন্তুষ্ট হব। প্রয়োজনীয়তাগুলি কী কী তা জেনেও কিছু বাস্তবায়ন শুরু করা বড় লাল পতাকা। আমি আপনাকে জিজ্ঞাসা আশা করি।
JensG

25

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


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

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

নমনীয় প্রয়োজনীয়তা অনুমান করে এটি সম্ভবত সবচেয়ে সহজ উত্তর।
দ্য মায়ার

9
+1 কারণ এটি মূলত সমস্যাগুলি যা গাইডগুলি সমাধান করে। একটি সদৃশ গাইড প্রস্তুত করা, এর বিন্যাস যাই হোক না কেন, এটি গ্রহের সবচেয়ে লটারি tery স্পষ্টতই অনেক লোকের সংঘর্ষের ঘৃণ্যতার মত প্রকাশ ঘটেনি।
usr ডিরেক্টরির

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

22

সাক্ষাত্কার প্রদানকারী বলেছেন যে পদ্ধতিটি সমান্তরালে নয়, একই সাথে বলা হবে; কেবলমাত্র তারিখ / সময়টিকে যতটা দশমিক স্থানে রাখতে পারেন তেমন ফিরিয়ে দিন।

সবাই কেন এ নিয়ে অতিরিক্ত চিন্তাভাবনা করছে? কোনও সুক্ষ্মতা ব্যয় হওয়ার আগে আপনি দীর্ঘদিন মারা যাবেন এবং আপনার কোনও সংঘর্ষের সম্ভাবনা নেই।

যদি আপনি একই সময়ে এটি ফিরে আসার বিষয়ে উদ্বিগ্ন হন তবে স্বল্প পরিমাণের পরিমাপযোগ্য সময়ের জন্য একটি বিলম্ব যুক্ত করুন।

যদি আপনি দিবালোক সঞ্চয় সময়ের জন্য একটি ঘড়ি ফিরিয়ে আনার বিষয়ে উদ্বিগ্ন হন (2 বার 1 বার অভিজ্ঞতা হয়েছে), দ্বিতীয়বার আপনি যখন এটি অভিজ্ঞতা অর্জন করেন তখন স্থির যোগ করুন।


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

1
System.currentTimeNanos () :-)
Falco

1
আপনি যদি কোনও মানব-পঠনযোগ্য ফর্ম্যাটে তারিখ এবং সময় ফিরিয়ে না দেন তবে আপনার মানটির মধ্যে কোনওভাবেই সময়কালীন তথ্য থাকা উচিত নয়।
মনিকার সাথে লাইটনেস রেস

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

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

15

প্রথমত, আপনি ইন্টারভিউয়ারকে দুটি প্রশ্ন জিজ্ঞাসা করতে চাইবেন।


প্রশ্ন 1.

সাক্ষাত্কারকারীর প্রত্যাশা রয়েছে এক বা একাধিক "কেন্দ্রীয় মেশিনগুলি" কিছু অনন্য নম্বর, বা অনন্য সংখ্যার ব্লক নির্ধারণের জন্য ব্যবহৃত হবে।


প্রশ্ন 2।

সাক্ষাত্কারকারীর সংঘর্ষ সনাক্তকরণের জন্য কোনও প্রক্রিয়া প্রত্যাশা করা হোক বা তার পরিবর্তে স্পষ্টভাবে সনাক্ত না করে সংঘর্ষের ক্ষুদ্র সম্ভাবনার গণনা করা ঝুঁকি গ্রহণ করুন।

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


একটি অন্তর্নিহিত প্রশ্ন 3, ...

তবে এটি এমন একটি যা আপনাকে জিজ্ঞাসা না করে নিজেকে গজ করতে হবে কারণ আপনার সাক্ষাত্কারকারীর কাছে জিজ্ঞাসা করা এটি অত্যন্ত জঘন্য।

সাক্ষাত্কার গ্রহণকারী সম্ভাবনা, ঝুঁকি এবং ক্রিপ্টোগ্রাফিক এবং তথ্য-সুরক্ষা ব্যবস্থায় নিযুক্ত কিছু সাধারণ কৌশল জ্ঞান গ্রহণ করে কিনা।

প্রথম ধরণের জ্ঞান নিশ্চিত করে যে আপনি কোনও অ-বৈজ্ঞানিক ব্যক্তিকে একটি বৈজ্ঞানিক ধারণা গ্রহণ করার জন্য যে তারা গ্রহণ করবে না তা বোঝানোর চেষ্টা করছেন না।

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


কেন জিজ্ঞেসা.

কারণটি হ'ল যদি সাক্ষাত্কারকারীর কাছে এটি অন্য কোনও উপায়ে প্রত্যাশা করা হয়, তবে বিপরীত পদ্ধতির সাথে উত্তর দেওয়ার চেষ্টা করা সাক্ষাত্কারকারীকে কখনও খুশি করতে পারে না।

গভীর কারণ হ'ল কিছু লোকের ধারণাটি 1.0e-20, ব্যর্থ হওয়ার একটি সম্ভাবনা পছন্দ করে না। (আমি এখানে দার্শনিক বা ধর্মীয় যুক্তি না জাগানোর চেষ্টা করব।)


র্যান্ডম সংখ্যার সমস্ত "নেমস্পেস" প্রথমে একটি শ্রেণিবিন্যাসে তৈরি করা হয়, কিছু সংখ্যক বিটকে এলোমেলোভাবে উত্সের জন্য বরাদ্দ করা হয়, এবং বিটগুলির অন্যান্য সংখ্যা কিছু অন্যান্য উপায়ে বরাদ্দ করা হয় ইত্যাদি

কেন্দ্রীভূত পদ্ধতির বিটগুলির প্রথম স্তরের স্বতন্ত্রভাবে নিয়োগের জন্য কিছু কেন্দ্রীয় কর্তৃপক্ষের উপর নির্ভর করে। তারপরে, অন্যান্য মেশিনগুলি বাকী বিটগুলি পূরণ করতে পারে।

বেশ কয়েকটি বিকেন্দ্রীভূত পদ্ধতি রয়েছে:

  • কেবল যতটা সম্ভব এলোমেলো সংখ্যা তৈরি করুন এবং গণনা দ্বারা ন্যায়সঙ্গত ব্যর্থ হওয়ার কার্যত শূন্যের সুযোগটি গ্রহণ করুন।
  • ডিস্ট্রিমেন্টিক উত্স থেকে এলোমেলো মান উত্পন্ন করার ক্রিপ্টোগ্রাফিক উপায় ব্যবহার করুন, বলুন, একটি ইনক্রিমেন্টিং মান values

আমি মনে করি এটি সেরা উত্তর। অন্যগুলি প্রয়োজন ছাড়াই সমাধান।
জ্যাক এইডলি

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

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

12

সুতরাং, মনে রাখবেন যে এটি একটি সাক্ষাত্কারের প্রশ্ন এবং বাস্তব জীবনের বাস্তব পরিস্থিতি নয়, আমি বিশ্বাস করি সঠিক পদ্ধতির (এবং সম্ভবত যে সাক্ষাত্কারটি সন্ধান করছে) একটি স্পষ্টতামূলক প্রশ্ন জিজ্ঞাসা করা, বা লিখতে "এটি পারে না করা "এবং এগিয়ে যান। কারণটা এখানে.

সাক্ষাত্কার কী জিজ্ঞাসা করে:

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

সাক্ষাত্কারের কী প্রয়োজন:

এই প্রার্থী কার্যকরভাবে প্রয়োজনীয়তাগুলি মূল্যায়ন করে এবং প্রয়োজনে অতিরিক্ত ইনপুট অনুসন্ধান করে?

কখনও অনুমান করো না.

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

বেশিরভাগ উত্তর একাধিক অনুমানের মাধ্যমে সমস্যাটি সমাধান করার চেষ্টা করে another একটি বিশেষভাবে কেবল এটি দ্রুত সম্পন্ন করার পরামর্শ দেয় এবং ভুল হয়ে থাকলে গ্রাহককে এটি নিয়ে উদ্বিগ্ন হওয়ার পরামর্শ দেয়।

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

প্রশ্ন কেন?

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

অনুমান করার পরে কী ঘটে?

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

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

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

অতিরিক্ত বিবেচনা

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

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

আপনি আপনার কাজের স্ট্যাক থেকে একটি অঙ্কন তুলেছেন। অঙ্কনটিতে বিভিন্ন কলআউট রয়েছে, তবে একটি অনুভূমিক পৃষ্ঠের সর্বাধিক গুরুত্বপূর্ণ বিন্দুতে "একেবারে সমতল" বলা হয়েছে। পৃষ্ঠটি 5 "প্রশস্ত বাই 16" দীর্ঘ এবং অংশটি অ্যালুমিনিয়াম দিয়ে তৈরি। আপনি কীভাবে এই বৈশিষ্ট্যটি তৈরি করতে অংশটি মেশিন করবেন?

(যাইহোক, কর্মক্ষেত্রে এমন ঘৃণ্য স্পেসিফিকেশন কত ঘন ঘন প্রদর্শিত হয় তা দেখে আপনি হতবাক হয়ে যাবেন))

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

শেষের সারি

যদি আমি কোনও ইঞ্জিনিয়ারের (বা অনুরূপ পেশার) সাক্ষাত্কার নিচ্ছি তবে আমি এমন কাউকে খুঁজছি যিনি সমালোচনা করতে পারেন এবং তাঁর সামনে কী রাখা হয়েছে তা প্রশ্ন করতে পারেন। আমি এমন কেউ চাই যে প্রশ্ন জিজ্ঞাসা করবে "এটি কি কোনও অর্থবোধ করে?" ।

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


5

স্বতন্ত্রতার গ্যারান্টি দেওয়া কঠিন কারণ কম্পিউটারগুলির অসীম-বৃহত ভেরিয়েবলগুলি নেই। কোনও বাস্তব-বিশ্বের ট্যুরিং মেশিন পারে না।

আমি এটি যেভাবে দেখছি এখানে দুটি সমস্যা রয়েছে এবং উভয়েরই সুসংহত সমাধান রয়েছে।

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

জাভাতে আমার সমাধানটি এখানে:

public class Foo {
  private static BigInteger value = BigInteger.ZERO;
  private static final Lock lock = new ReentrantLock();

  public static BigInteger nextValue() {
    try {
      lock.lock();
      value = value.add(BigInteger.ONE);
      return value;
    }
    finally {
      lock.unlock();
    }
  }
}

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


আমি মনে করি যে কোডটি কেবল পাঁচ শতাধিক বছরেরও বেশি সময় ব্যবহার করা হবে এটি একটি বৈধ অনুমান। আপনি যদি কেবলমাত্র 64 বিট স্টোরেজে ক্রমবর্ধমান মানগুলি ফিরিয়ে দেন তবে আপনি বেশ কিছুক্ষণের জন্য ঠিক আছেন। আমাদের প্রতি 1 কল এ, 584555 বছরে।
মাকিং হাঁস

1
অন্তত জাভাতে, এটি 2 ^ 63 মান (এত দীর্ঘ অর্ধেক)। একে অপরকে হত্যা করার প্রবণতা দেখিয়ে মানব জাতির থেকে আরও দীর্ঘকাল সম্ভবত উপস্থিত থাকবে। নির্বিশেষে, আমি আরও তাত্ত্বিক পদ্ধতির গ্রহণ করেছি। বাস্তবিকভাবে, 64 (বা 63) বিট যথেষ্ট হওয়া উচিত enough

1
@ স্নোমান: কি?!? আপনার সমাধানটি কেবল 250 কে বছরের জন্য বৈধ??!?!? পরবর্তী প্রার্থী !!!!!! :-)
বব জার্ভিস - মনিকা

0

আমি সার্ভারের একটি পোর্টের মাধ্যমে ফাংশনটি প্রকাশ করব; ফাংশনটি কল করার জন্য, অনুরোধকারী মেশিনটি একটি সংযোগের জন্য অনুরোধ করে এবং একটি অনুমোদিত হয়, একই সময়ে একটি সনাক্তকারী কোড বরাদ্দ করা হয় (সরলতার জন্য ক্রমিক সংখ্যা) sequ যখনই বন্দরে কোনও অনন্য মানের অনুরোধ করে একটি বার্তা প্রেরণ করা হয়, সনাক্তকরণের কোডের এমডি 5 হ্যাশের সাথে বর্তমান তারিখ এবং সময়ের এমডি 5 হ্যাশকে সম্মতি জানাতে মানটি তৈরি করা হয়।

তারা যদি আরও বুলেটপ্রুফ সমাধান চায় তবে তাদের বিষয়ে সমস্ত অস্পষ্ট হওয়ার চেয়ে তাদের প্রকৃত প্রয়োজনীয়তাগুলি নির্দিষ্ট করতে হবে।


-1
string uniq(string machine_id) 
{
   static long u = long.MinValue;
   Interlocked.Increment(ref u);

   //Time stamp with millisecond precison
   string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
                                            CultureInfo.InvariantCulture);

   return machine_id + "-" + timestamp + "-" + u;
}

উপরের উপায়ে আমরা নিশ্চিত করতে পারি যে পুনরায় চালু হওয়া বা বিভিন্ন মেশিনের একসাথে বলা হলেও রিটার্নের মান আলাদা হয়।


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

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