كيف تختلف Java عن اللغات الشائعة الأخرى؟ لماذا تعتبر Java أول لغة تتعلمها؟ دعنا نضع خطة تساعدك على تعلم جافا من الصفر واستخدام مهارات البرمجة بلغات أخرى. ندرج الاختلافات بين إنشاء كود الإنتاج في Java والتطور بلغات أخرى. قرأ ميخائيل Zatepjakin هذا التقرير في اجتماع للمشاركين في المستقبل في
التدريب من ياندكس وغيرهم من المطورين المبتدئين - ميتا جافا جونيور.
- مرحبا بالجميع ، اسمي ميشا. أنا مطور من Yandex.Market ، وسأخبركم اليوم عن سبب تعلم Java وكيفية القيام بذلك بفعالية. يمكنك طرح سؤال معقول: لماذا سأقول ذلك ، وليس بعض المطورين الأقوياء مع مجموعة من سنوات الخبرة؟ الحقيقة هي أنني درست Java مؤخرًا ، منذ حوالي عام ونصف ، لذا ما زلت أتذكر كيف كان الأمر وما هي المآزق.
قبل عام ، حصلت على فترة تدريب في Yandex.Market. وضعت خلفية ل "أنا آخذ" ، للسوق نفسها ، وربما كنت قد استخدمت ذلك. الآن ما زلت أعمل هناك ، في فريق آخر. نحن نصنع منصة Yandex.Market التحليلية لشركاء الأعمال.

لنبدأ. لماذا تعلم جافا من وجهة نظر عملية؟ الحقيقة هي أن جافا هي لغة برمجة مشهورة جدا. لديه مجتمع كبير جدا.
على سبيل المثال ، يوجد فهرس TIOBE ، وهو فهرس شائع لشعبية لغات البرمجة ، ويحتل Java المرتبة الأولى هناك. أيضًا ، في المواقع التي بها وظائف شاغرة ، ستلاحظ على الأرجح أن معظم الوظائف الشاغرة تدور حول Java فقط ، أي أنها تتطور في Java ، ويمكنك دائمًا العثور على وظيفة.
نظرًا لأن المجتمع كبير جدًا ، فسيتم الرد على أي من أسئلتك في بعض مواقع Stack Overflow أو مواقع أخرى. أثناء التطوير في Java ، تكتب رمزًا فعليًا باستخدام JVM ، بحيث يمكنك النقل بسهولة إلى Kotlin ، Scala ، ولغات أخرى تستخدم JVM.

ما هي جافا جيدة من وجهة نظر أيديولوجية؟ هناك لغات برمجة مختلفة. أنها تحل مشاكل مختلفة ، أنت تعرف ذلك. على سبيل المثال ، من الرائع في Python كتابة نصوص بخط مفرد لحل المهام السريعة.
على الايجابيات ، يمكنك التحكم الكامل في التعليمات البرمجية القابلة للتنفيذ. على سبيل المثال ، نحن نقود السيارات ، Yandex المركبات غير المأهولة ، يتم كتابة التعليمات البرمجية الخاصة بهم على الايجابيات. لماذا؟ جافا لديها شيء من هذا القبيل - جامع القمامة. ينظف ذاكرة الوصول العشوائي من الأشياء غير الضرورية. يبدأ هذا الشيء تلقائيًا ويجعل إيقاف العالم ، أي أنه يوقف بقية البرنامج وينتقل إلى عد الكائنات ويمسح الذاكرة من الأشياء. إذا كان شيء من هذا القبيل يعمل في طائرة بدون طيار ، فإنه ليس باردا. ستذهب طائرة بدون طيار مباشرة ، في هذه اللحظة لمسح الذاكرة وعدم النظر إلى الطريق. لذلك ، يتم كتابة الطائرة بدون طيار على الايجابيات.

ما المهام التي يحلها Java؟ هذه لغة في الأساس لتطوير برامج كبيرة تمت كتابتها لسنوات أو عشرات أو مئات الأشخاص. على وجه الخصوص ، يتم كتابة الكثير من الخلفية في Yandex.Market بلغة Java. لدينا فريق موزع في عدة مدن ، عشرة أشخاص لكل منهما. والشفرة سهلة الصيانة ، وقد تم دعمها لمدة عشر سنوات أو أكثر ، وفي الوقت نفسه يأتي أشخاص جدد ، فهم يفهمون هذا الرمز.
ما هي الخصائص التي يجب أن تتمتع بها اللغة من أجل دعم الشفرة الموجودة عليها بسهولة ولتكون سهلة التطوير في فرق كبيرة. بادئ ذي بدء ، يجب أن يكون رمزًا قابلاً للقراءة ، ويجب أن يكون من السهل تطبيق حلول معمارية معقدة عليه. بمعنى أنه يجب أن يكون من السهل كتابة تجريدات عالية المستوى عليها ، إلخ. كل هذا يوفر لنا فقط Java. هذه هي لغة وجوه المنحى. من السهل حقًا تنفيذ أعمال تجريدية عالية المستوى وبنى معقدة عليها.
هناك أيضًا الكثير من الأطر والمكتبات لـ Java ، لأن اللغة عمرها أكثر من 15 عامًا. خلال هذا الوقت ، تم كتابة كل ما يمكن كتابته عليه ، لذلك توجد مجموعة من المكتبات لكل ما يمكن أن يكون مفيدًا لك.

ما هي المهارات الرئيسية ، في رأيي ، يجب أن يكون لدى javist المبتدئين؟ بادئ ذي بدء ، هذه هي معرفة لغة جافا الأساسية. وعلاوة على ذلك هو أي إطار حقن التبعية. سوف يتحدث المتحدث التالي كيريل بشكل كامل عن هذا. لن أذهب بعمق. وعلاوة على ذلك هو أنماط التصميم والهندسة المعمارية. نحن بحاجة إلى أن نكون قادرين على كتابة رمز جميل معماريا لكتابة التطبيقات الكبيرة. وهذا نوع من SQL أو ORM لمهام قاعدة البيانات. وهذا هو أكثر عن الخلفية.

دعنا نذهب! جافا الأساسية. هنا لن أكتشف أمريكا بشكل خاص - أنت بحاجة إلى معرفة اللغة نفسها. ما يجب الانتباه إليه. أولاً ، أصدرت Java الكثير من الإصدارات في السنوات الأخيرة ، أي في الفترة 2014-2015 ، تم إصدار الإصدار السابع ، ثم الثامن ، والتاسع ، والعاشر ، وتم تقديم الكثير من الأشياء الجديدة الرائعة ، على سبيل المثال ، Java Stream API ، lambda ، إلخ. أشياء رائعة وجديدة رائعة يتم استخدامها في رمز الإنتاج ، والتي تُسأل في المقابلات وتحتاج إلى معرفتها. لذلك ، يجب ألا تأخذ كتابًا من رف في مكتبة Java-4 وتذهب لتعلمه. مثل هذه الخطة: تعلم جافا 8 أو أعلى.
نولي اهتمامًا شديدًا بالابتكارات مثل Stream API و var وما إلى ذلك. يُطلب منها في المقابلات وتستخدم باستمرار في الإنتاج. وهذا يعني أن واجهة برمجة تطبيقات Stream أكثر برودة بكثير من الدورات ، بشكل عام ، شيء رائع للغاية. تأكد من الانتباه.
وهناك كل أنواع الأشياء مثل التكرارات والاستثناءات وما إلى ذلك. ما يبدو غير مهم بالنسبة لك أثناء كتابة بعض الرموز الصغيرة بنفسك. أنت لا تحتاج إلى هذه الاستثناءات ، من يحتاج إليها على الإطلاق؟ ولكن بالتأكيد سيُطلب منهم في المقابلات ، وسيكونون بالتأكيد مفيدين لك في الإنتاج. بشكل عام ، يجدر الانتباه إلى الاستثناءات والتكرارات وأشياء أخرى.

هياكل البيانات. بدون بنيات ، لن يكون الأمر رائعًا إذا كنت لا تعرف أن هناك مجموعة ، وقاموس ، وصحائف. وكذلك تطبيقات مختلفة للهياكل. على سبيل المثال ، يحتوي القاموس نفسه في Java على العديد من التطبيقات ، بما في ذلك HashMap و TreeMap. لديهم مقاربين مختلفين ، يتم ترتيبهم بشكل مختلف من الداخل. تحتاج إلى معرفة كيف تختلف ، متى أي واحد للاستخدام.
سيكون أيضًا رائعًا إذا كنت تعرف كيف تعمل هياكل البيانات هذه في الداخل. بمعنى أنه ليس من السهل معرفة تقاربهم - مقدار عمل الرهان ، وكيف يعمل المقطع ، وكيف يعمل الهيكل الداخلي - على سبيل المثال ، ما هو الجردل في HashMap.
كما أنه يجدر الانتباه إلى الأشجار والرسوم البيانية. هذه هي الأشياء التي ليست كثيرة جدًا في رمز الإنتاج ، لكنها محبوبة في المقابلات. وفقًا لذلك ، يجب أن تكون قادرًا على الالتفاف حول الأشجار والرسومات في العرض والعمق. هذه كلها خوارزميات بسيطة.
بمجرد أن تبدأ في كتابة التعليمات البرمجية الكبيرة والمعقدة إلى حد ما ، باستخدام المكتبات والرمز متعدد الطبقات ، ستدرك أنه من الصعب عليك بناء أنظمة وحل التبعيات. هذا هو في المقام الأول Maven و Gradle. إنها تتيح لك استيراد مكتبات إلى مشروعك بالفعل في سطر واحد. أي أنك تكتب XML أحادي السطر وتستورده في مشروع المكتبة. نظم رائعة. هم تقريبا نفس الشيء ، استخدم إما Maven أو Gradle.
التالي هو بعض نظام التحكم الإصدار. أوصي بـ Git لأنها تحظى بشعبية ، وهناك الكثير من الدروس. الجميع تقريبا يستخدم Git ، شيء رائع ، بدونه في أي مكان.
و - بعض بيئة التطوير. أوصي IntelliJ Idea. إنه يسرع عملية التطوير إلى حد كبير ، ويساعدك كثيرًا ، كل رمز شفرة نحاسية يكتب لك ، بشكل عام ، رائع.

SQL. قليلا عن backenders. هنا ، في الواقع ، كانت حالة مضحكة. قبل يومين من مقابلتي التدريبية الثانية ، اتصلت بي فتاة من الموارد البشرية وقالت إنهم سيطلبون مني في غضون يومين من SQL و HTTP أن أحتاج إلى التعلم. ولم أكن أعرف شيئًا عن SQL ولا عن HTTP حول أي شيء. ولقد وجدت مثل هذا الموقع
الرائع -
SQLZOO . على ذلك ، تعلمت SQL لمدة 12 ساعة ، بمعنى ، بناء جملة SQL ، وكيفية كتابة استعلامات SELECT ، JOIN ، إلخ. موقع رائع جدًا ، أوصي به بشدة. في الواقع ، خلال 12 ساعة ، تعلمت 90٪ مما أعرفه الآن.
من الرائع أيضًا معرفة بنية قاعدة البيانات. هذه كلها أنواع المفاتيح ، المؤشرات ، التطبيع. حول هذا الموضوع ، هناك سلسلة من المشاركات على Habré.

في Java ، بالإضافة إلى SQL ، هناك كل أنواع أنظمة تعيين الكائنات ذات الصلة مثل JPA. هناك بعض الرموز. في الطريقة الأولى ، يكون بعض كود SQL هو اسم SELECT معرف من info.users WHERE id في userIds. من قاعدة بيانات المستخدمين ، من الجدول ، يتم استلام معرفاتهم وأسماءهم.
بعد ذلك ، هناك نوع من المخططات التي تحول كائن من قاعدة إلى كائن Java. وهناك طريقة ثالثة أدناه ، والتي ، في الواقع ، تنفذ هذا الرمز. كل هذا باستخدام JPA يمكن استبداله بسطر واحد ، والذي هو مكتوب أدناه. انها تفعل الشيء نفسه - العثور على جميع ByIdIn. وهذا هو ، باسم الأسلوب ، فإنه ينشئ استعلام SQL لك.
أشياء رائعة جدا. عندما لا أعلم SQL ، استخدمت نفسي JPA. بشكل عام ، انتبه. إذا كنت كسول جدا لتعلم SQL - النار. وبشكل عام ، النار!

الربيع. من سمع عن شيء مثل إطار الربيع؟ ترى كم منكم؟ لسبب وجيه. الربيع هو في متطلبات كل وظيفة ثانية لخلفية جافا. بدون ذلك ، لا يوجد مكان يجب تطويره. ما هو الربيع؟ هذا هو في المقام الأول إطار Dependency Injection. المتكلم التالي
سوف نتحدث أيضا عن هذا. ولكن باختصار ، هذا شيء يسمح لك بتسهيل استيراد تبعيات فئة إلى أخرى. وهذا هو ، تبسيط المعرفة من التبعيات.
Spring التمهيد هو قطعة Spring هذه التي تتيح لك رفع تطبيق الخادم الخاص بك بنقرة واحدة. تذهب إلى THID ، وانقر فوق اثنين من الأزرار ، والآن تم رفع تطبيق الخادم الخاص بك على المضيف المحلي 8080. أي أنك لم تكتب سطرًا واحدًا من التعليمات البرمجية ، لكنه يعمل بالفعل. أشياء رائعة جدا. إذا كنت تكتب شيئًا خاصًا بك ، فأطلق النار!
الربيع هو إطار كبير جدا. ليس فقط يثير لك تطبيق الخادم ويحل Dependency Injection. يتيح لك القيام بمجموعة من كل شيء ، بما في ذلك إنشاء أساليب REST API. هذا هو ، لقد كتبت بعض الطريقة ، وضعت تعليق توضيحي الحصول عليها. وهنا لديك بالفعل بعض الأساليب على مضيف محلي تكتب Hello world لك. سطرين من التعليمات البرمجية ، وأنها تعمل. الاشياء باردة.
الربيع يجعل اختبارات الكتابة أسهل. دون اختبار في تطور كبير بأي شكل من الأشكال. يحتاج الرمز إلى اختباره. لهذا السبب ، تحتوي Java على مكتبة JUnit 5. الرائعة ، وعموما JUnit ، لكن الإصدار الأخير هو الخامس. هناك كل شيء للاختبار ، وجميع أنواع التأكيدات وأشياء أخرى.
وهناك إطار موكيتو رهيبة. تخيل أن لديك بعض الوظائف التي تريد اختبارها. تؤدي الوظيفة الكثير من الأشياء ، بما في ذلك في مكان ما في الوسط ، تدخل "VKontakte" مع معرف ، على سبيل المثال ، وتحصل على الاسم الأول والأخير للمستخدم "VKontakte" بواسطة ID. ربما ، لن تدخل فكونتاكتي في الاختبارات ، هذا غريب. لكنك تحتاج إلى اختبار الوظيفة ، لذلك أنت هذه الفئة ، باستخدام Mockito ، جعلتها mok ، تقليدها.
ستقول أنه عندما يأتي طلب مع هذا المعرف بمثل هذا المعرف ، فإنه سيعيد بعض الاسم الأخير ، على سبيل المثال ، Vasya Pupkin. وسوف تعمل. وهذا هو ، سوف تختبر كل وظيفة ل mok نوع واحد من فئة. أشياء رائعة جدا.

أنماط التصميم. ما هذا هذه هي أنماط لحل مشاكل التنمية النموذجية. في مجال التطوير ، غالباً ما تنشأ نفس المهام أو المهام المماثلة التي ستكون رائعة لحلها بطريقة جيدة. لذلك ، توصل الناس إلى أفضل الممارسات ، وبعض الأنماط ، وكيفية حل هذه المشكلات.
يوجد موقع ويب به أكثر الأنماط شيوعًا - refactoring.guru ، يمكنك أن تقرأ ، تعرف على الأنماط ، اقرأ مجموعة من النظرية. المشكلة هي أنها غير مجدية عمليا. في الواقع ، الأنماط بدون ممارسة ليست ذات فائدة خاصة.
سوف تسمع عن بعض الأنماط مثل Singletone أو Builder. من سمع هذه الكلمات؟ الكثير من الناس. هناك أنماط بسيطة يمكنك تنفيذها بنفسك. لكن معظم الأنماط: الإستراتيجية ، المصنع ، الواجهة - ليس من الواضح أين يمكن تطبيقها.
وإلى أن ترى في الممارسة العملية في بعض الشفرات الأجنبية المكان الذي يتم تطبيق هذا النمط عليه ، فلن تكون قادرًا على تطبيقه بنفسك. لذلك ، الممارسة مهمة جدا مع الأنماط. والقراءة عنها في refactoring.guru ليست مفيدة للغاية ، ولكن يجب عليك القيام بذلك.

لماذا هناك حاجة أنماط؟ تتيح لك بعض مستخدم الفئة. لديه هوية واسم. يجب أن يكون لكل مستخدم معرف واسم. أعلى اليسار من الدرجة.
ما هي طرق تهيئة المستخدم؟ خياران هما إما منشئ أو واضع. ما هي عيوب كلا النهجين؟
مصمم. مستخدم جديد (7 ، "Bond") ، حسنًا. الآن دعنا نقول أنه ليس لدينا فئة مستخدم ، ولكن البعض الآخر ، مع سبعة حقول رقمية. سيكون لديك مُنشئ له سبعة أرقام متتالية. ليس من الواضح ما هي هذه الأرقام ، أي منها ينتمي إلى أي عقار. المنشئ ليس كبيرا.
الخيار الثاني هو واضع. تكتب بوضوح: setId (7) ، setName ("Bond"). أنت تفهم ما الممتلكات التي تنتمي إلى أي مجال. لكن واضعة لديه مشكلة. أولاً ، يمكنك أن تنسى أن تنبثق شيئًا ما ، وثانياً ، يتحول كائنك إلى عنصر قابل للتغيير. هذا ليس مؤشر ترابط آمن ويقلل قليلاً من إمكانية قراءة التعليمات البرمجية. لذلك ، جاء الناس بنمط رائع - باني.

ما الأمر؟ سنحاول جمع مزايا كلا النهجين - كلاهما واضع ومنشئ - في واحد. نحن نصنع كائنًا معينًا ، Builder ، والذي سيكون له أيضًا حقول Id و Name ، والتي سيتم بناؤها بنفسها على أساس setter ، وستحتوي على طريقة Build تُرجع إليك مستخدمًا جديدًا بكل المعلمات. نحصل على كائن ثابت واضعة. باردة!
ما هي المشاكل؟ هنا لدينا منشئ الكلاسيكية. المشكلة هي أنه لا يزال بإمكاننا أن ننسى ملء بعض الحقول. وإذا نسينا نشر معرف ، في هذه الحالة في الباني سيتم تهيئته إلى الصفر ، لأن النوع int غير قابل للإلغاء. وإذا جعلنا الاسم "Bond" وننسى زيارة المعرف ، فسنحصل على مستخدم جديد له المعرف "0" واسم "Bond". ليس بارد
دعونا نحاول محاربة هذا. في Builder ، غيّر int إلى int بحيث تكون لاغية. الآن كل شيء رائع.

إذا حاولنا جعل المستخدم يحمل الاسم "Bond" ، متناسين إعطاءه معرفًا ، فسنحصل على استثناء مؤشر فارغ ، لأن المعرف ليس باطلاً ، لكن Builder له باطل ، على وجه التحديد استثناء من المؤشر.

ولكن لا يزال بإمكاننا أن ننسى وضع الاسم ، لذلك نعلق إعادة تشغيل الكائنات على أنها خالية. الآن ، عندما نبني كائننا من Builder ، فإنه يتحقق من أن الحقل غير قابل للإلغاء. وهذا ليس كل شيء.
لنلقِ نظرة على المثال الأخير. في هذه الحالة ، إذا وضعنا بعض الشيء في وقت تشغيل المعرّف ، فسيكون من الرائع أن تعرف على الفور أنك فعلت هذا وليس من الرائع أن ترتكب خطأ الآن.

لا تحتاج إلى رمي خطأ في لحظة إنشاء المستخدم ، ولكن عند تعيين قيمة خالية للمعرف. لذلك ، سنقوم في Builder بتغيير الضابط Integer إلى int ، وسيقسم على الفور هنا الذي ألقى خالية.
باختصار ، ما هي النقطة؟ هناك أبسط نمط منشئ ، ولكن حتى تنفيذه يحتوي على بعض التفاصيل الدقيقة ، لذلك من الرائع للغاية النظر إلى تطبيقات مختلفة للأنماط. كل نمط لديه العشرات من التطبيقات. هذا كل شيء مثير جدا للاهتمام.

كيف نكتب باني في رمز الإنتاج؟ هنا هو مستخدمنا. نقوم بتعليق تدوير الباني من مكتبة لومبوك عليه ، وهو نفسه يولدنا الباني. أي أننا لا نكتب رمزًا ، ولكن Java يعتقد بالفعل أن هذه الفئة بها منشئ ، ويمكننا أن نسميها هكذا.
لقد قلت بالفعل أنه في Java توجد مكتبات لكل شيء تقريبًا ، بما في ذلك Lombok ، مكتبة رائعة تتيح لك عدم كتابة ملف. باني ، الحصول على.

هناك أنماط معمارية - لا تتعلق فقط بفئة واحدة ، ولكن بالنظام ككل. يوجد مبدأ رائع في تصميم النظام: مبدأ المسؤولية الفردية. عن ماذا يتحدث؟ حقيقة أن كل فصل يجب أن يكون مسؤولاً عن بعض وظائفه. في هذه الحالة ، لدينا وحدة تحكم تتواصل مع المستخدمين ، كائنات JSON. هناك واجهة ، والتي تحول كائنات JSON إلى نماذج ، والتي سوف تستمر في العمل مع تطبيق Java. هناك خدمة فيها منطق معقد يعمل مع هذه الطرز. هناك كائن الوصول إلى البيانات ، والذي يضع هذه النماذج في قاعدة البيانات ويزيلها من قاعدة البيانات. وهناك قاعدة البيانات نفسها. بمعنى آخر ، ليس كل هذا في نفس الفصل ، لكننا نصنع خمس فئات مختلفة ، وهذا نمط آخر.

عندما يكون لديك جافا تعلمت أكثر أو أقل ، فمن الرائع أن تكتب نوعًا من مشروعك الخاص ، حيث ستكون هناك قاعدة بيانات ، والعمل مع واجهات برمجة التطبيقات الأخرى ، والتي ستوفر تطبيق الخادم الخاص بك مع عملاء REST API. سيكون من الرائع إدخال مثل هذا الشيء في السيرة الذاتية ، هذه نهاية رائعة لتدريبك. مع هذا ، يمكنك الذهاب والحصول على وظيفة.

فيما يلي مثال لتطبيق الخادم الخاص بي. في السنة الثانية ، كتبت ورقة مصطلح مع الرجال. كتبوا تطبيق المحمول لتنظيم الأحداث. هناك ، يمكن للمستخدمين تسجيل الدخول عبر VKontakte ، ووضع النقاط على الخريطة ، وإنشاء الأحداث ، والاتصال بأصدقائهم عليها ، وحفظ صورة الأحداث ، إلخ.
ماذا فعلت في المشروع؟ كتب تطبيق خادم على Spring Boot دون استخدام SQL. لم أكن أعرفه ، اعتدت JPA. ما هي القدرة على القيام به؟ تسجيل الدخول إلى VK من خلال OAuth-2. خذ رمز المستخدم ، انتقل معه إلى VK ، تحقق من أن هذا مستخدم حقيقي. تلقي معلومات حول المستخدمين من خلال فكونتاكتي. يخزن بمهارة المعلومات في قاعدة بيانات ، وكذلك من خلال JPA. حفظ الصور والملفات الأخرى بمهارة في ذاكرة الكمبيوتر ، وحفظ الروابط إليها في قاعدة البيانات. لم أكن أعرف بعد أن هناك كائنات CLOB في قاعدة البيانات ، لذلك فعلت ذلك بهذه الطريقة. كان هناك REST API للمستخدمين ، وتطبيقات العميل. وكانت هناك اختبارات وحدة للوظيفة الأساسية.
[...] مثال صغير على تعليمي الناجح لجافا. في السنة الأولى من دراستي في الجامعة ، علموني C # وقدموا لي فهمًا حول برمجة OOP - ما هي الفصول الدراسية ، الواجهات ، التجريد ، لماذا هم بحاجة إليها. لقد ساعدني كثيرا. بدون هذا ، يكون تعلم جافا أمرًا صعبًا للغاية ، ومن غير الواضح سبب الحاجة إلى الدروس.

في سنتي الثانية في الجامعة ، أعطوا جافا مرة أخرى ، لكنني لم أتوقف عند هذا الحد ، وذهبت إلى دراسة سبرينغ بنفسي وكتبت ورقة مصطلح ، مشروعي الذي تحدثت عنه أعلاه. ومع كل هذا ، ذهبت إلى التدريب في Yandex ، وخضعت للمقابلة ، ودخلت في Yandex.Market. هناك كتبت خلفية لبيرو ، هذا هو سوقنا ، و Yandex.Market نفسها.
بعد ذلك ، قبل ستة أشهر ، انتقلت إلى فريق آخر داخل نفس السوق. نقوم بتحليلات لشركاء الأعمال. نحن في المنصة التحليلية ، يوجد ثلاثة منا على الواجهة الخلفية ، لذلك لدي حصة كبيرة جدًا من التأثير على المشروع. هذا مثير جدا للاهتمام ، في الواقع. أي أننا نوفر حقًا بيانات السوق - أي المبيعات ، وفي أي الفئات ، وفي هذه النماذج ، لشركاء الأعمال ، والشركات الكبيرة المعروفة. وهناك ثلاثة منا فقط ، نكتب هذا الرمز ، وهو رائع جدًا.
شكرا لك روابط مفيدة:
-
"Java 8. دليل للمبتدئين .
"-
هياكل البيانات .
-
SQLZOO .
-
تطبيع قواعد البيانات .
-
أنماط التصميم .
-
أنماط التصميم .
-
كود نظيف .
-
جافا فعالة .