لن تكون قادرًا على حل هذه المشكلة في المقابلة

مرحبا يا هبر. أريد أن أشارككم مشكلة واحدة مثيرة للاهتمام تلقاها الكثير منا في المقابلة ، لكن ربما لم يدركوا أننا كنا نحلها بشكل غير صحيح.

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

نص المهمة


اكتب وظيفة تأخذ سلسلة كمدخلات وتُرجع هذه السلسلة "للخلف"

function strReverse(str) {};
strReverse('Habr') === 'rbaH'; // true

, , :

const strReverse = str => str.split('').reverse().join('');

- , «split('')». , : « , ...?». .

, , , emoji! , , , , (, ).
, emoji , .
image

, , . , , , , , , !

image

, , , … , , , emoji ?
, !
image

. , , , , — , .
, . « ?» . «, » — , … « ? ? , — ? !» — .
, , — .

Emoji?


, — ! , .

emoji unicode 8.0 emoji 2.0 , emoji.

.

emoji

image



, emoji

image



emoji, zwj — .
ZERO WIDTH JOINER (ZWJ) — , , emoji ZWJ (200D), «» emoji :
image



, emoji .

, , , ?

.


, .
emoji, , , .


emoji_sequence :=
  emoji_core_sequence
| emoji_zwj_sequence
| emoji_tag_sequence

#   

emoji_core_sequence :=
  emoji_character
| emoji_presentation_sequence
| emoji_keycap_sequence
| emoji_modifier_sequence
| emoji_flag_sequence

emoji_presentation_sequence :=
  emoji_character emoji_presentation_selector
emoji_presentation_selector := \x{FE0F}

emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}

emoji_modifier_sequence :=
  emoji_modifier_base emoji_modifier
  
emoji_modifier_base := \p{Emoji_Modifier_Base}
emoji_modifier := \p{Emoji_Modifier}
#     

emoji_flag_sequence :=
  regional_indicator regional_indicator

regional_indicator := \p{Regional_Indicator}

emoji_zwj_sequence :=
  emoji_zwj_element ( ZWJ emoji_zwj_element )+
  
emoji_zwj_element :=
  emoji_character
| emoji_presentation_sequence
| emoji_modifier_sequence

emoji_tag_sequence := 
    tag_base tag_spec tag_term
    
tag_base := 
  emoji_character
| emoji_modifier_sequence
| emoji_presentation_sequence
tag_spec := [\x{E0020}-\x{E007E}]+
tag_term := \x{E007F}


, , () , .

Unicode Categories


, , , , , , . . : emoji: {Emoji}, {Emoji_Presentation}, {Emoji_Modifier}, {Emoji_Modifier_Base}, , , , ECMAScript . — — {Emoji}

image

tc-39 (stage-2 10.04.2019).

« , » — github.com/mathiasbynens/emoji-regex, , , … , … , ! !



    const emojiRegex = require('emoji-regex');
    const regex = emojiRegex();
    function stringReverse(string) {
        
        let match;
        const emojis = [];
        const separator = `unique_separator_${Math.random()}`;
        const reversedSeparator = [...separator].reverse().join('');
    
        while (match = regex.exec(string)) {
            const emoji = match[0];
            emojis.push(emoji);
        }
    
        return [...string.replace(regex, separator)].reverse().join('').replace(new RegExp(reversedSeparator, 'gm'), () => emojis.pop());
    
    }
    

image


"" , - , . , : « , , null >= 0? !». , 100% , , - — , . -, , , - .

, , .

:

\u{0415}\u{0308}. , 2 , emoji, … — .

UPD: «», 2 u{0415}() u{0308}("̈), «» .

Source: https://habr.com/ru/post/ar447614/


All Articles