هذه مقابلة مع أنطون باتياف من مركز دويتشه بنك للتكنولوجيا. سنتحدث عن ما يفعله علماء الرياضيات الماليون ، ومن أين تأتي البيانات من البنوك ، وكيفية معالجتها وتحسينها. على تعقيد الدخول في القطاع المالي ، والتداول في البورصة والحاجة العامة للبنوك.

ماذا وكيف يتم حسابهم في البنك؟
- عرف نفسك ، من فضلك: أخبرني من أنت ، ماذا تفعل.
انتقلت إلى Deutsche Bank TechCenter في أوائل شهر يناير من هذا العام وأقوم الآن بتطوير جانب الخادم في مشروع يأخذ في الاعتبار أنواع مختلفة من مخاطر الأدوات المالية للعديد من المتداولين المختلفين حول العالم والفرق الأخرى التي تحتاج إلى هذه البيانات.
قام المشروع ببناء بنية تحتية واسعة النطاق إلى حد كبير تستخدم العديد من الأطر القياسية الشعبية ، وقواعد البيانات غير العلائقية ، وتعمل مع البيانات الضخمة على كافكا. نحن نعمل أيضًا مع شبكة لعشرات الآلاف من وحدات المعالجة المركزية ، ونستخدم العديد من المشاريع المخصصة ، ونحسن العمل مع protobuf ، وننفذ الحسابات في الرياضيات المالية ،
كجزء من البنية التحتية ، هناك عدد من التحسينات والرقائق الإضافية. ربما يكون هذا واضحًا ، لكن من الصعب للغاية تحديد ما يحدث في البنك بشكل متسق ومنطقي ، فقد ألقى به اثنان في المائة وحصلوا على موارد مالية - هذه هي الرياضيات المعقدة ، الخوارزميات ، والمهام التقنية والبنية التحتية الضخمة.
- تعال بالترتيب. لقد قلت إنك في TechCenter تقوم بإجراء حسابات للمنصة المصرفية العالمية. وماذا يمكن اعتباره في البنك؟
بناءً على تجربتي ، في إطار الأنشطة الاستثمارية ، يتم النظر في كل من الأسعار وعدد من المؤشرات الأخرى للأدوات المختلفة. إذا تحدثنا عن الأسهم ، فكل شيء واضح: السعر هو سعرها. بالنسبة للسندات ، ستكون هذه النسبة المئوية للقيمة الاسمية.
إذا تحدثنا عن المشتقات (الأدوات المالية المشتقة) ، فإن السعر هو حجم القسط الذي يجب دفعه مقابل هذه الأداة. يتم حسابه بواسطة العديد من الصيغ المختلفة. هناك صيغة Black-Scholes تقدر قيمة الخيارات - هذه دالة تعتمد على وظيفة السعر الحالي والأصل الأساسي والتقلب ووقت انتهاء الصلاحية والعديد من العوامل الأخرى.
هناك نماذج تتيح لك حساب قيمة محفظة المتداول. لدى الإدارة أو الشركة مجموعة من المعاملات ، والأدوات المالية المشتقة في محفظة ، وتحتاج إلى حساب التكلفة الحالية. بشكل منفصل ، يمكن أن يكون هناك سعر واحد ، ولكن بشكل إجمالي - يمكنهم الارتباط بطريقة ما ، وإعطاء خصومات ، وما إلى ذلك. على سبيل المثال ، المواضع الاصطناعية: كيفية إنشاء خيار مكافئ للعقود الآجلة من الخيارات. هذا مناسب ، على سبيل المثال ، للأصول غير الخطية مثل الخيارات ، ولكن ليس صحيحًا بالضرورة لجميع أنواع المشتقات. يستند التقييم إلى عرض أسعار الأصل الأساسي الذي تم بناء المشتق عليه. على سبيل المثال ، اقتباس واحد أو أكثر من أزواج العملات. يمكن بناء المشتقات على أصول أساسية مختلفة: بالنسبة للعملة ، ستكون الأصول الأساسية هي اليورو والدولار وما إلى ذلك ؛ لمشتقات السلع - النفط والذهب والقمح ؛ لل بقعة - مختلف الأسهم والسندات.
بالإضافة إلى تقييم المشتقات ، يتم النظر في المخاطر أيضًا - ماذا سيحدث إذا ارتفعت الأسعار في السوق بقوة (تغيرات التقلب). أو ماذا سيحدث إذا كان سعر الدولار لا 60 ، ولكن 100 روبل فيما يتعلق بواحدة أو جميع العملات الأخرى. ماذا سيحدث لأداة محددة ، محفظة.
تحتاج إلى حساب ذلك في الوقت الحقيقي ، وتقريب الحالة الحالية للمحفظة لمختلف النتائج السلبية لتحركات الأسعار لكل من العملات ، والتغيرات في تقلبات السوق. للقيام بذلك ، نقوم ببناء مصفوفة لجميع التغييرات المحتملة ، والتي تبين ما هو الآن ، ما سيحدث غدًا وما سيحدث في حالة حدوث أزمة في السوق.
يعد ذلك ضروريًا لتقييم ما يمكن شراؤه وبيعه في الوقت الحالي وما هي المخاطر. بما في ذلك تقييم ما سيحدث في المستقبل ، وتقييم استراتيجيات التداول والاستجابة بدقة أكبر لتغيرات السوق. على سبيل المثال ، توصلت واحدة من الكوانتا إلى خوارزمية جديدة لحساب المخاطر - تحتاج إلى التحقق من البيانات التاريخية ، والقيادة ، على سبيل المثال ، لمعرفة جميع معلومات التبادل لعدة عقود ومعرفة ما يحدث.
لهذه الاحتياجات ، هناك بنية أساسية متصلة بمختلف منصات التبادل التي تنقل بيانات السوق إلينا. نظرًا لأن لشركتنا الكثير من البيانات حول العالم ، فنحن بحاجة إلى تخزين مواد تجميعية وإنشائها بطريقة أو بأخرى من أجل معالجتها بسرعة.
- قبل الانتقال إلى جزء البنية التحتية ، أود أن أسأل عما قلته بالفعل. تحدثت عن مجموعة من جميع أنواع خوارزميات التحليل ، من أين تأتي هذه الخوارزميات؟ هل هذا نوع من المعرفة الكتابية أو أفضل الممارسات الخاصة بك؟
هناك بضع نقاط. أولاً ، يتم أخذ الصيغ المعروفة ، الخوارزميات التي اخترعها علماء الرياضيات. على سبيل المثال ، نموذج تسعير الخيارات المقبول عمومًا هو صيغة Black-Scholes. لكن ، إلى جانب ذلك ، هناك تحسينات داخلية: على وجه الخصوص ، نحن نستخدم قوانين أخرى لتوزيع الأسعار ، فنحن نغير المعاملات في هذه الصيغ. يمكن أن تكون صيغة منحنى التوزيع للأسعار والصفقات والمؤشرات الأخرى مختلفة للغاية.
إذا تحدثنا عن التحسين ، فهذه تحسينات داخلية بالفعل. على سبيل المثال ، يمكن للمطورين ، بدلاً من حساب المؤشرات في كل نقطة ، حساب القيم الأساسية وإجراء التقديرات ، والتي ستتكلف 20 مرة أقل من وقت الكمبيوتر ، ولكن في نفس الوقت تعطي دقة مقبولة وكافية.
تتغير جميع البيانات باستمرار ، وهذا مهم بالنسبة لنا ليس فقط للتقارير ، ولكن أيضًا لمنح المتداولين صورة حديثة عن حالة السوق.
- هذه معلومات معقدة إلى حد ما ، وربما يكون من الصعب للغاية نقلها من شخص لآخر. ما هو حجم فريقك ، وكيف تنقل المعرفة بينكما؟
يستخدم مشروعنا في موسكو 35 شخصًا. هذه هي العديد من الفرق التي تتعامل مع أجزاء معينة من الوظائف: واجهة المستخدم ، الخلفية ، البنية التحتية ، الرياضيات المالية. كل فريق لديه خبرة عميقة في وظائف وحدة معينة. ولكن إلى جانب هؤلاء الأشخاص ، هناك أكبر عدد من الأشخاص الذين يشاركون في النظم المتعلقة بمشروعنا.
يتم وصف جميع المعلومات المتعلقة بمشروعنا من قبل المحللين في Confluence ، كما يتم تضمينها في أوصاف المهام في JIRA ، حيث توجد روابط إلى الآليات القياسية والصيغ العامة. يمكن العثور على أمثلة لاستخدام الوظيفة في الاختبارات. حسنًا ، لم يتم إلغاء التواصل البشري.
- علماء الرياضيات المالية: كم منهم ومن هم؟ أي علماء مهمين؟
نعم ، إنهم متخصصون بشكل أساسي (كوانتا) يجلسون في لندن ويبنون نماذج مالية لكيفية عمل السوق. في معظم الأحيان لديهم شهادة الدكتوراه في العلوم المالية أو الرياضيات. إنهم يعرفون كيف يعمل السوق ، وما يحتاج إليه المتداولون ، ويمكنهم التوصل إلى نوع من النماذج الرياضية التي تصف حالة السوق ، وخوارزميات حساب المخاطر والتقييم الصحيح للمشتقات.
على سبيل المثال ، كتب زميلي ألكساندر مقالاً عن حبري ، حيث ذكر بالفعل تجربة الكم.
- هل يمكن للمطورين العاديين التواصل معهم؟ كيف تسير هذه الاتصالات؟ في الواقع ، الرياضيات والتنمية التقليدية لها عوالم مختلفة تمامًا.
يمكنهم التواصل والتواصل: من الواضح أن بعض المهام والمفاهيم التجارية رفيعة المستوى تناقش مع القادة ، ولكن في إطار حسابات المخاطر المحددة أو غيرها من المؤشرات ، يتصل المطور مباشرة بالتاجر أو الكم الذي قام بتصميم هذا النموذج.
لكن في الواقع ، هذه عملية تفاعل متبادلة ، لأن الخوارزمية النظرية لا يتم تنفيذها دائمًا في الممارسة العملية. لذلك ، يمكن للمطورين اقتراح تغييرات على النموذج بحيث يعتمد على بنية التطبيق الحالية.
هناك العديد من الطرق للتفاعل - نفس Skype والهاتف وجميع أدوات الاتصال القياسية.
- البرنامج الذي يخرج كنتيجة تلقائي؟ هل هذه الروبوتات أم أن هناك شيئًا للمتداولين الذين يشاركون في التحليل الفني - الرسوم البيانية أو أي شيء آخر؟
هناك العديد من الخيارات لاستخدام البرنامج: الأول تلقائي ، أي روبوتات التداول ، والثاني هو مساعد للمتداول ، والذي يوضح الحالة الحالية للمحفظة ، مع توضيح المخاطر في مختلف المؤشرات ، وخيارات التداول التي يمكنه القيام بها الآن ، وكذلك الحالة المستقبلية للمحفظة والمخاطر بناءً على نتائج هذه العمليات. هناك أيضًا مؤشرات للمتداولين وحساب المخاطر وبيانات حول حالة المحافظ.
- المقياس الآخر هو تكرار تحليل البيانات ، كم مرة تفعل ذلك؟ على جانب واحد من الطيف ، كما أفهمها ، بعض الجزئية والثانية ، من ناحية أخرى ، تحليل البيانات الضخمة التي قد تستغرق أسابيع.
بناءً على تعقيد وأهمية المؤشرات ، يمكن أن تكون هذه مؤشرات حية ، يتم إعادة حسابها لكل علامة ، ثم يتم حساب الحساب بالميلي ثانية. وإذا قمنا بحساب تكلفة المحافظ ، فستحدث التحديثات مرة واحدة في الثانية ، بحيث يكون للعين البشرية الوقت الكافي لإدراكها.
إذا وصفت العمليات الحسابية الطويلة (على سبيل المثال ، بعض المخاطر المعقدة) ، والبيانات المطلوبة خلال اليوم ، ثم يتم إرسال المهام إلى الشبكة ، سينظر في سيناريو تغيير أسعار العملات. الآلية العامة هي كما يلي: تفكر في جميع المعاملات الجديدة داخل دورة معينة ، ثم تقوم بمهمة صعبة على الشبكة لإعادة حساب المؤشرات لمجموعة المعاملات بأكملها في الوضع الحالي للسوق.
يمكن تحديث هذه المهام مرة واحدة في الساعة. إذا كنت بحاجة إلى التخلص من استراتيجيات التداول - فهذه مهمة طويلة ، يتم طرحها ، ويتم النظر فيها لعدة ساعات ، اعتمادًا على تعقيد البيانات وحجمها. يمكن أن تكون المهام على الشبكة إما صغيرة جدًا ، على سبيل المثال ، حساب صيغة واحدة وإعطاء نتيجة واحدة ، أو كبيرة ، على سبيل المثال ، للجداول حيث تحتاج إلى حساب الارتباطات بين جميع سيناريوهات المخاطرة المحتملة وإعطاء النتيجة المدمجة.
تظهر هنا مهمة تحسين حمل الشبكة والتنبؤ بوقت حساب المهمة اعتمادًا على نوع الأداة وكمية البيانات والمؤشرات الأخرى لتحميلها إلى الحد الأقصى. لأنه إذا ألقيت مهمة واحدة كبيرة ، فسوف ينتظر الجميع في الطابور ، على الرغم من أنه يمكنك خلال هذا الوقت حساب شيء آخر.
بشكل عام ، مهمة حقيبة تحمل على الظهر وغيرها من التحسينات. عندما يكون تنفيذ الأمر ping على الشبكة أطول من وقت الحساب نفسه ، سنفعل ذلك على الواجهة الخلفية ، حيث تم بالفعل نشر مجموعة مصغرة لهذه المهام الصغيرة.
- هل يمكنني وضعه بطريقة أو بأخرى في نوع من الهيكل؟ بقدر ما أفهم ، يتم تطبيق أساليب التحسين المختلفة اعتمادا على حجم المهام. في المهام الصغيرة ، من المنطقي تحسين برنامج التحويل البرمجي JIT ، والمهام الكبيرة ، شيء آخر. أخبرني ما هي مجالات المشكلة والأساليب المستخدمة هناك للتعجيل والتحسين.
مثال على مهمة كبيرة هي حساب جميع الأدوات المالية والمخاطر عند تغيير أسعار كل عملة بنسبة 1-2-3-10 ٪. في هذه الحالة ، سيتألف التحسين من تجميع الصفقات في حزم بحيث توجد ضمن حزمة واحدة صفقات لنوع واحد من المحفظة أو عملة واحدة.
بحيث لا توجد العديد من حسابات المخاطر لكل معاملة ، فنحن نقدمها كصفقة واحدة بحجم كبير ، ثم نقسم النتائج بالتناسب. وبالتالي ، فإننا نخفض عدد الحسابات اللازمة.
مثال التحسين الآخر هو هذه المرة مع أزواج العملات. دعنا نقول أن هناك اثنين من أزواج من "الدولار روبل" و "روبل اليورو". في الزوج الأول ، يمكنك أن تتخيل أن الروبل يهبط ، لكن من الممكن أن ينمو الدولار. في الواقع ، هذا هو نفسه. الشيء نفسه ينطبق على زوج الروبل باليورو. وفقًا لذلك ، يمكننا النظر في أزواج مختلفة للوهلة الأولى في حزمة واحدة ، على أساس أن الروبل يتغير في كلتا الحالتين.
يتم تقليل عدد العمليات الحسابية ويتم تسريع النتيجة. يبدو أنها غيرت عملة واحدة (في مثالنا ، الروبل) ، ولكن في الواقع ، قمنا بحساب مخاطر الأصول غير المتجانسة.
- وهل يمكنك حل المشكلة وجهاً لوجه وتوجيهها إلى مجموعة ضخمة ضخمة؟
هناك مثل هذه الكتلة ، لكنها بالفعل محملة بالعديد من العمليات الحسابية. الكتلة ليست مطاطية ، على الرغم من عشرات الآلاف من وحدات المعالجة المركزية الموجودة حاليًا.
- ومن وجهة نظر البرنامج ، في الذاكرة DataGrid أو Hadoop؟
نعم ، هناك Hadoop ، و Kafka لمعالجة كل هذا ، وقاعدة بيانات ClickHouse لتحسين العمل مع البيانات الكبيرة. فيما يتعلق بتكدس البيانات ، من الواضح أن قيادة JSONs ، بعبارة أخرى ، غير فعالة. في هذا الصدد ، هناك لحظات من التحسين مع Protobuf. من المهم بالنسبة لنا ليس فقط وضع بيانات ثنائية ، ولكن في نفس الوقت للقيام بذلك بإحكام قدر الإمكان ، باستخدام القواميس.
فيها سنخزن ، على سبيل المثال ، مواصفات العقد من نفس النوع لجميع المعاملات. بسبب هذا التحسين مع القواميس ، وفر زميل 30 ٪ من الذاكرة المحتلة.
- هل هذه القواميس على عقد محددة وتكرارها أو تقع في قاعدة مركزية؟
بطرق مختلفة. معظمهم في قاعدة مركزية. وهناك قواميس تقوم بنقلها إلى الشبكة مع مجموعة من العمليات الحسابية. إنها تريد أن تكون مضغوطة قدر الإمكان حتى لا تسحب الكثير من البيانات ، لأن قنوات الإنترنت ليست مطاطية.
كيف يعمل؟ يمكنك إرسال مهمة الحساب إلى الشبكة مع جميع المعلومات اللازمة لها ، والتي تحزم في قواميس لتجنب التكرارات. في الداخل ، سيكون هناك بالفعل كل المحتوى ، ولن تحتاج إلى الانتقال إلى مستودعات إضافية. هذا يحفظ حركة مرور الشبكة ويقلل الكمون في العمليات الحسابية.
- على حد علمي ، لدى البنوك تحليل للبيانات التاريخية ، وهو عبارة عن حزمة ضخمة من البيانات لكل غيغا بايت. والنهج مع قاعدة بيانات واحدة لا يعمل؟ يمكنك وضع 2 تيرابايت على المفتاح ، لكنها ليست جيدة.
نعم ، يتم تحديد هذه اللحظات عن طريق التجزئة. سيكون لديك ذاكرة التخزين المؤقت المحلية حسب البلد ، وتنتشر عن طريق تبادل المعلومات ، لأن إرسال معلومات حول جميع المعاملات من نيويورك إلى سنغافورة هو كثيفة الاستخدام للموارد. من الواضح أن التقسيم حسب البلد هنا منطقي: على سبيل المثال ، المعاملات في الولايات المتحدة ستوضع في مراكز البيانات الأمريكية. موقف مشابه مع علامات الاقتباس - تحتاج إلى إنشاء توجيه وتحديد نوع الصفقة ، والمنطقة التي تنتمي إليها ، لفهم مكان وجود ذاكرة التخزين المؤقت ، وإرسالها إلى التخزين وقواعد البيانات اللازمة وعدم مطاردة البيانات مرة أخرى.
- ويحدث أن تحتاج إلى ربط البيانات من مناطق مختلفة؟
نعم ، إنها كذلك ، وهي مهمة صعبة. من الواضح أننا لن نقوم بضخ تيرابايت من البيانات من جميع المناطق من أجل الحصول على نتائج مجمعة. على الأرجح في كل منطقة ستقوم بحساب إجمالي هذه المنطقة ومن ثم ستجمع كل هذه النتائج للحصول على بيانات موجزة.
- على الأرجح ، هناك بيانات خارجية ، على سبيل المثال ، تاريخ التبادل. وكيف نتعامل معها؟ هل تعكس نفسك في الداخل ، أم أن هناك طرق لمعالجتها؟
هناك بروتوكولات واتصالات لموفري البيانات القياسيين: رويترز ، بلومبرج ، والتي توفر تبادل المعلومات. نقوم بتخزين البيانات المطلوبة على المخازن الداخلية ، ولكن يمكن إعادة طلب بعض الأشياء من مزود البيانات. مرة أخرى ، حسب المنطقة ، حتى لا تدفع حركة المرور.
من الواضح أنهم قاموا أيضًا بنشر خوادم حول العالم لضمان السرعة والأداء.
- والبيانات للقراءة أو القراءة / الكتابة؟ إذا كان السجل ليس مخيفا للفة مثل هذه المجلدات؟
بشكل أساسي ، للقراءة ، تتم الكتابة أثناء تسجيل المعلومات حول المعاملات والمعلومات الأخرى المطلوبة من قبل المنظمين. في الأساس ، الحسابات للاحتياجات المحلية: المخاطر ، وقيمة المحافظ ، وهلم جرا. هذا مطبخ داخلي ، تقوم بتسليم بيانات بعض المناطق أو مركز البيانات ، دون إرسالها إلى الخارج.
- إذا انفصلت قطعة ما عن القمر وانتقلت إلى مركز بيانات ، فماذا سيحدث؟ هل انتهى كل شيء؟
يتم نسخ البيانات الموجودة في مراكز البيانات. من الواضح أنه داخل المنطقة ، لا توجد البيانات على محرك أقراص ثابت واحد في مركز بيانات واحد. خلاف ذلك ، كما هو الحال في تلك الدراجة ، يمكن لأي سيدة تنظيف أن تقطع الخادم عن طريق الخطأ. يتم نسخ كل شيء عبر الإنترنت: هناك دفق من البيانات في كلا الاتجاهين ، تقرأ من أقرب مرآة ، ويمكنك المزامنة مع التسجيل لضمان الاتساق.
ولكن ، كقاعدة عامة ، تتوفر معلومات أقل للتسجيل ، لأنه يجب عرضها للمستخدم. إذا رأى إعادة الفرز ليس الآن ، ولكن بعد ثانيتين من مصدر آخر ، فهذا أمر محزن ، ولكن يمكنك العيش. من الواضح أن البيانات المطلوبة للمنظمين والمسوقين الخارجيين والمشاركين في السوق تتكرر وتتزامن في عدة مصادر حتى لا تفقد أي شيء.
كيف يعد المركز التقني دويتشه بنك البيانات ويجمع القمامة

- سؤال حول إعداد البيانات. بقدر ما أفهم ، كل مصدر له شكله الخاص ، وتحويله على الفور ليس فكرة جيدة. هل ما قبل إعدادهم للحسابات؟
هناك تنسيق واحد داخلي. من الواضح أنه من الأنسب العمل مع نفس البيانات ، لكن هذا يترجم إلى الحاجة إلى تحويلها. هناك دفق البيانات وفرق مسؤولة عن تبادل المعلومات ، والاتصال بالموردين. إنها تشكل وتثري البيانات بتنسيق واحد. لحل مشاكل الأداء ، سيكون هناك دفقان للبيانات ، إحداهما عبارة عن دورة سريعة تعطي معلومات قادمة من دفق بيانات التبادل. بسبب هذا ، فمن الضروري الانتقال إلى العديد من المستودعات وتشكيل بنية قياسية. على ذلك يمكنك حساب المؤشرات اللازمة في الوقت الحقيقي.
وهناك دورة أبطأ تعالج نفس الدفق ، ولكن مع كل مجموعة الحقول الضرورية ، في تنسيقنا. يتم تشغيل حسابات بطيئة بشكل متزايد ، والتي تتطلب مجموعة من المعلومات الإضافية والحقول وكل شيء آخر.
- كيف تبدو من وجهة نظر المطور؟ هل تعرف دائمًا أي منطقة في قاعدة البيانات تتأثر بالحسابات الثقيلة؟
يصل إليك حدث ما ، الحقول التي يمكن ملؤها 100٪ وفقط جزئيًا. في الأحداث السريعة ، يمكنك حساب المؤشرات التي يتم إعادة فرزها عبر الإنترنت بسرعة. في دورة طويلة وأبطأ مع مجموعة كاملة من البيانات ، يمكنك إعادة فرز المهام التي تتطلب جميع المؤشرات. هذا إذا لم تتعمق ، لأن كل هذا يتوقف على تفاصيل المهام.
- ويتم تخزين البيانات على ماذا؟ الأقراص الصلبة ، SSD ، RAM ، تماما في RAM؟
في الغالب في الذاكرة. نحن نعمل مع القوالب الكبيرة على الوصلات الخلفية التي تستهلك وتخزين البيانات إما في الهياكل القياسية في Java أو في بعض شبكات البيانات في الذاكرة ، وهذا يتوقف على مدى سرعة ومدى قرب البيانات التي تحتاجها. من الواضح أن البيانات التاريخية للأيام الماضية سيتم تخزينها على محركات الأقراص الصلبة والأقراص. ولكن ما هو مطلوب أو قد يكون مطلوبًا لإجراء العمليات الحسابية سيتم تحميله في ذاكرة التخزين المؤقت في الذاكرة.
- هل من الممكن القيام بشيء ما دون التخزين المؤقت ، ولكن مع فقدان المعلومات ، باستخدام حسابات غير دقيقة؟
نعم. ذكرت قليلاً أنك في بعض الأحيان تحتاج إلى حساب المخاطر على سلسلة التغييرات للأصل من 0 إلى 100٪ ، حيث تغيرت المؤشرات. تم تصميم مخطط التوزيع كنسبة مئوية ، وفقًا لصيغة أو علاقة خطية. يمكنك بناء النقاط الرئيسية والقيام بالتقريب. يتم الحصول على النتائج التقريبية ، والتي لن تتزامن مع القيمة الحقيقية بنسبة 100 ٪ إذا عدنا في كل نقطة محددة في الرسم البياني ، ولكن ستكون كافية للعمل مع هذه البيانات.
غالبًا ما يتم استخدام هذا النهج لأنه يسمح ، على سبيل المثال ، بعدم القيام بجميع العمليات الحسابية عند تغيير قيمة كل عملة بالنسبة لجميع العملات الأخرى ، بزيادة قدرها بنس واحد. تقوم بحساب إما التحرك بخطوة نادرة ، أو تحديد بضع نقاط محددة ، وإقحام الباقي. قيم الدقة ستكون كافية.
- هل هو دائما مع ارتفاع درجات الحرارة في جافا أم أن كل شيء خارج الورك؟
يكذب في الغالب على الورك.
- كيف إذن تكافح مع جمع القمامة؟
, - huge pages, . , Shenandoah. full GC .
: flame graph, , , , .
— , flame graph?
, - Java-, , . ELK-, GC- , , . 150 — , . , 150 . , .
— Java GC ?
Java 8, 11- . . , , G1.
— ?
, . JVM.
— , , . - , ?
نعم يمكنك ذلك. , . . ( UAT — user acceptance testing ) — , . , , . 2 , — 3 , , .
. , , , . , .
— , - , , ? ?
. : , GC, live set . - . — . , . , .
-, - . , . , JSON diff. JSON .
, . , , . .
— , , ?
, , . 100 «», . , . .
master, , , . , , , , . .
, , , , . , , . CI, .
— ?
. — , , . , , , , . - , .
— , .
— , , . , , , , - .
, - , — - , UI, . , , , , UI.
— ? «» Spring?
Spring, Java, MongoDB Protobuf, dependency injection. UI React, gRPC , .
— Mongo, Oracle. - ?
, , . . - , JDBC . - SpringData , JDBC. , , , .
— - CQRS?
, , .
— ? , …
.
— ? , .
, . , , ++ . GNU/Linux, Java. -, . , . , , , . .
, .
— ?
, «» . , , - , - . , , - «» . , , , , , .
— ?
-, , .
: , , . . , , , . , .
, 150 , . - . , .
, , , . , , , — . , , .
-

— - , , , ?
, — . , - , - . , . , 4, .
, - . — . , .
, , . , .
— - - , ?
« ». — , — , .
- - , , - . , , .
, . , , . — . - , . , -.
, , . , , - ( -, - ).
— ?
. , . , , .
— , , , - . , — , .
. , : , - , .
, , - , , . , , , , — . , , , .
( , )
— , ? ?
, , Java. dependency injection, , , — , . , . . : , - .
, . , , , , happens-before. , , .
كما تعلم ، فإن بعض الأشياء مثل IntStream#distinct
تتضمن التفاف الأوليات في أنواع Java وبالتالي العملية العكسية. لا يبدو هذا أمرًا مخيفًا للغاية ، ولكن على كميات كبيرة من البيانات ، ستكون الملاكمة الجماعية ورسائل البريد الإلكتروني ملحوظة ، وستستخدم الذاكرة دون جدوى. تحتاج إلى فهم الشجاعة من Java نفسها ، لأنه في تفاهات مثل الملاكمة ، يمكنك إنشاء مجموعة من التخصيصات الإضافية التي لا تحتاج إليها. ولكي تلاحظ ذلك في الوقت المناسب ، يجب أن تكون قادرًا على استخدام الأدوات لتقييم الأداء وجمع المقاييس وفهم الأشياء القياسية الأخرى.
- هل تحتاج إلى معرفة تفاصيل البنك؟
لا ، في الأساس. نحن ندرك جميعًا أن هؤلاء الأشخاص الذين يعرفون تفاصيل البنك يعملون بالفعل في البنوك. عندما تأتي من مجال آخر ، فأنت على الأرجح لا تعرفها. في البداية ، يمكنك دراسة المستندات على النقاط العامة: ما هي العقود المستقبلية ، ما هو الخيار ، وكيف تختلف ، ما هي المخاطر. وأنت فقط تغطس وتبدأ في فهم تفاصيل العمل.
ولكن مع ذلك ، من المهم. في البداية ، يمكنك ببساطة تنفيذ وظيفة ليست مرتبطة بخصوصية أعمال معينة ، ولكن تعلم تدريجياً أشياء أكثر تعقيدًا وموضوعًا محددًا. ما هو هنا ، ما كان في مكان العمل الأخير (عندما كنت ، بصفتي رئيس القسم ، الموظفين المعينين) - لاحظت أنه من بين كل عشرة أشخاص على الأقل يفهم شخص ما مستقبلهم ، فإن هذا جيد بالفعل.
إذا كانت لديك معرفة بالخوارزميات ، وخاصية تعدد العمليات ، و Java بشكل عام ، فلن تكون دراسة تفاصيل الأعمال أمرًا صعبًا. اتضح أنه عندما تغوص في هذه البيئة ، وقراءة المستندات وفهمها.
- كيف ستختبر هذه المعرفة العميقة بجافا في المقابلة؟ هل هذا حقيقي؟
من الواضح أنك على الأرجح لن تتحقق منها. ولكن هناك مهام قياسية في المنطق ، الخوارزميات ، فهم الهياكل الداخلية. هذه مهمة اختبار وترميز السبورة. على سبيل المثال ، مهمة لتنفيذ ذاكرة التخزين المؤقت في قائمة انتظار من شأنها أن تعطي تفهمًا لما إذا كان المرشح يفهم تعدد العمليات - السباقات والجمود وكل شيء آخر. على طول الطريق ، يمكنك طرح أسئلة حول مقدار الذاكرة التي تستهلكها ، لماذا TreeMap ، وليس HashMap. وبالتالي ، حل مشكلة عامة واحدة ، يمكنك الذهاب لحظات من تفاصيل مختلفة. هنا ، بدلاً من ذلك ، الممارسة التي يتم بها حساب بعض الفروق الدقيقة.
- ما رأيك يجب القيام به لتصبح أفضل كمبرمج؟
تتطور! ترميز ومراقبة ماهية التقنيات والخوارزميات ، ما هي اللغات الجديدة ، حل مشكلات الخوارزمية. في الواقع ، يعتمد الكثير على الخبرة. إذا كنت قد قمت بحل الكثير من المشكلات في الخوارزميات ، فيمكنك العثور على شيء مشابه من المهام السابقة بطريقة جديدة غير مألوفة. من الضروري تطوير التفكير ، والقدرة على العثور بسرعة على الإجابات. القدرة على google والبحث عن حلول على StackOverflow مفيدة للغاية. إذا كنت لا تعرف شيئًا ما ، لكنك تعرف مكان العثور عليه ، فهذا هو السبيل إلى النجاح.
اللغات تتغير ، ويجري تحويل التقنيات والأطر. تأتي أنماط جديدة ، لكن تبقى بعض الأنماط التي يستخدمها الجميع. لم تعد مؤتمرات جافا بدون تقارير حول روابط التفاعل والحديث عن Kotlin. الجلوس في شرنقة وعدم فهم أن الاستعانة بمصادر الأحداث الآن ، بمعنى ما ، يستحوذ تدريجياً على العالم أمر غريب.
من الضروري تطوير خلفية. على سبيل المثال ، لا تزال كتب Knut ذات صلة. قاعدة بالإضافة إلى التقنيات الجديدة. وتحتاج إلى معرفة أين وماذا جوجل.
- ما هو آخر شيء فهمه؟
في Kotlin Coroutines. رائع ، أنا أحب ذلك. سواء في بناء الجملة والمنطق. أنا أنظر في كيفية العمل به مع تعدد مؤشرات الترابط وتزامن. في السابق ، كان علي استخدام Kotlin قليل جدًا. الآن أنا أدرسه بنشاط ، بعض المشاريع تستغلها بالفعل. حتى أنه موجود في بعض الوحدات الصغيرة على همز.
