SberTech тЩе рдУрдкрди рд╕реЛрд░реНрд╕, рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХрд┐рдВрдЧ рд╕рдВрдЪрд╛рд▓рди - рдЬреЛрдХрд░ 2018 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдпрд╣ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдерд╛ рдЬреЛрдХрд░ 2018 , рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛! рд▓реЗрдХрд┐рди рд╕рдореНрдореЗрд▓рди рди рдХреЗрд╡рд▓ рднрд╛рд╖рдгреЛрдВ рдореЗрдВ рд╕рдореГрджреНрдз рдерд╛ред рд╕рднреА рдкреНрд░рд╛рдпреЛрдЬрдХ рдХрдВрдкрдирд┐рдпреЛрдВ рдиреЗ "рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ" рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╣рдо рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВред

Sberbank Technologies рдХреЗ рд╕реНрдЯреИрдВрдб рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реЗ рдереЗред SberTech рдореЗрдВ рд╣рдорд╛рд░реА рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдбреНрд░реЙ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╣рд┐рдореНрдордд рджрд┐рдЦрд╛рдИред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ, рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓реЗрдЧреАред



рдзрд┐рдХреНрдХрд╛рд░ рд╣реИ


рдкреЗрдЯрд╛ рдФрд░ рдХреЛрдпрд╛ рдиреЗ рдЕрдкрд╛рдЪреЗ рдЗрдЧреНрдирд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рддрд┐ рджрд┐рди рдПрдХ рдлреАрдЪрд░ рджрд┐рдпрд╛ред

рдорд╛рд╢рд╛ рдЬрд▓реНрджреА рд╕реЗ рд╣рд░ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рд░реЛрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
рдкреЗрдЯрд┐рдЯ рдХреА рд╣рд░ рддреАрд╕рд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдФрд░ рдХреЛрд▓реНрдпрд╛ рд╕реЗ рдкрд╛рдВрдЪрд╡реЗрдВ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред
рдкреЗрдЯреНрдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд 2 рджрд┐рди рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ, рдХреЛрд▓реНрдпрд╛ 3, рдФрд░ рд╡реЗ рдлрд┐рд░ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ
рдкреНрд░рддрд┐рдмрджреНрдзред

86 рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдореЗрдВ рдорд╛рд╢рд╛ рдкреЗрдЯреА рдХреЛ рдкрд╕рдВрдж рдХрд░рддреА рд╣реИ, рддреЛ рдХрд┐рддрдиреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдмрддрд╛рдИ рдЬрд╛рдПрдВрдЧреА
рдФрд░ рд╡рд╣ рдЙрд╕ рджрд┐рди рдХреЗрд╡рд▓ рдЕрдкрдиреА рдЧрд▓рддреА рдкрд░ рдзреНрдпрд╛рди рджреЗрддреА рд╣реИ рдЬрдм рдХреЗрд╡рд▓ рдЙрд╕рд╕реЗ рдЧрд▓рддреА рд╣реЛрддреА рд╣реИ?

рдирд┐рд░реНрдгрдп
13 рд╡реЗрдВ рджрд┐рди рд╕реЗ, рдПрдХ рдЪрдХреНрд░ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреЗрдЯреНрдпрд╛ рдХреЛ рд╣рд░ рджреВрд╕рд░реА рдЧрд▓рддреА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрд╡рд╛рдм рд╣реИ
64 + 54 = 118;

рд╡рд┐рд▓рд╛рд░рд┐рдмреЛ рдФрд░ рд╡рд┐рд▓реНрдмрд╛рдЧреНрдЧрд┐рдпреЛ


рдЦрд╛рддреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ
рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЙрдирдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЦрд╛рддреЗ, рдЕрд░реНрдерд╛рддреНред рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВред
рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд░реЛрдз рдХреЛ рдмреИрдВрдХ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рджреНрд╡рд╛рд░рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд▓реЗрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдордпред
рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣рдореЗрд╢рд╛ рдЖрд░реЛрд╣реА рдХреБрдВрдЬреА рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 2 рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдирджреЗрди рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХред
рджреЛрдиреЛрдВ рдмреИрдВрдХреЛрдВ рдореЗрдВ 10 рдЦрд╛рддреЗ рд╣реИрдВ, рдЦрд╛рддреЛрдВ рдХреА рдХреБрдВрдЬреА 1 рд╕реЗ 10 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдмреИрдВрдХ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП 12 рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдСрдкрд░реЗрд╢рди рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди 3 рддрдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЦрд╛рддреЛрдВ:
- рдСрдкрд░реЗрд╢рди рдирдВрдмрд░ 1 (рдЦрд╛рддреЗ: рдП, рдмреА, рд╕реА), рдЬрд╣рд╛рдВ рдП = рдЖрдИ, рдмреА = рдП + 1, рд╕реА = (рдП + рдмреА)% резреж,
- рдСрдкрд░реЗрд╢рди рдирдВрдмрд░ 2 (рдЦрд╛рддреЗ: рдбреА, тАЛтАЛрдИ, рдПрдл), рдЬрд╣рд╛рдВ рдбреА = 11-рдЖрдИ, рдИ = рдбреА -1, рдПрдл = (рдбреА + рдИ)% 10,
рдореИрдВ 1 рд╕реЗ 6 рддрдХ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдкреВрд░реНрдг рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рдж рд╣реА рдЕрдЧрд▓реА рдЬреЛрдбрд╝реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рдкрд┐рдЫрд▓рд╛ рд╡рд╛рд▓рд╛ред
рдмреИрдВрдХ рдХреА рдиреАрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ, рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рдСрдкрд░реЗрд╢рди рдирдВрдмрд░ 1 рд╕реЗред
рдпрджрд┐ рдХреБрдВрдЬреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ,
рдлрд┐рд░ рдкрд╣рд▓рд╛ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рджреВрд╕рд░рд╛ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред
рдЕрдиреБрдХреНрд░рдорд┐рдХ рдореЛрдб рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗ 2 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдХреМрди рд╕рд╛ рдмреИрдВрдХ рдФрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛?

рдорджрдж
рдХреБрд▓:
- 6 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ,
- 12 рдСрдкрд░реЗрд╢рди
- рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 3 рдХреБрдВрдЬреАред

рдирд┐рд░реНрдгрдп
рдпрджрд┐ рд╕рднреА рдХреБрдВрдЬреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрднрд╡ рд╣реИред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдирд╣реАрдВ, рдФрд░ рдЧрддрд┐рд░реЛрдз рд╕рдВрднрд╡ рд╣реИред

рдЧрдгрдирд╛
рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХ рдПрдХ рд▓реЗрдирджреЗрди рдкрд░ 1 "рдЪрд╛рддреБрд░реНрдп", 2 "рдХрдард┐рдирд╛рдЗрдпреЛрдВ" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдФрд░ 10 рдХреЗ рдЧрддрд┐рд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдВрдХ "рдХрдард┐рдирд╛рдЗрдпреЛрдВ" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 2 "рдЙрдкрд╛рдпреЛрдВ" рдФрд░ 4 рдкрд░ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЧрддрд┐рд░реЛрдз рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдЬрд╡рд╛рдм рд╣реИ
рдЙрд╕реА рд╕рдордп рдкреВрд░рд╛ рдХрд░реЗрдВред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЬреЛрдЦрд┐рдо


рд╕реЗрд░рд╛рд╣рд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдиреБрднрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рдмреЗрд╣рдж рдЬреБрдЖ рдФрд░ рдЕрд╕реАрдо рд▓рд╛рд▓рдЪреА рд╣реИред
рдПрдХ рдмрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЬреАрдердм рдкрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЯреЛрдЯ рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рдорд┐рд▓рд╛ред
рдиреНрдпреВрдирддрдо рд╢рд░реНрдд рдХреНрдпрд╛ рд╣реИ рдЬреЛ рд╢реЗрд░реЛрдЬрд╝рд╛ рдЬреАрдд рд╕рдХрддреА рд╣реИ?

рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдвреЛрдирд╛ рд╕реВрдЪреА рд╕рдВрд▓рдЧреНрди рд╣реИ:

class Bid { //  int amount; boolean checked; boolean restricted; Bid(int amount) {this.amount = amount;} } ~~~ AtomicReference<Bid> ref = new AtomicReference<>(); volatile boolean winner = false; ~~~ Thread validator = new Thread(() -> { //  ! while (true) { Bid bid = ref.get(); if (bid == null) continue; if ((((bid.amount << 5) ^ 1_000_000) >>> 6) < (2 << 15)) bid.restricted = true; bid.checked = true; } }); Thread payer = new Thread(() -> { //  ! while (true) { Bid bid = ref.get(); if (bid == null) continue; if (bid.checked) { if (!bid.restricted) winner = true; // ! ref.set(null); } } }); ~~~ synchronized boolean makeMeRich(int amount){ //    ? if (winner) return false; //    -    ref.set(new Bid(amount)); while(ref.get() != null) sleep(1); return winner; //   "true" -     } 

рдЯрд┐рдк # 1
- 131072
- рдирд╣реАрдВ, рдЬрд╛рд▓ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ :)
рдЯрд┐рдк # 2
рдиреНрдпреВрдирддрдо рд╢рд░реНрдд рдХреНрдпрд╛ рд╣реИ рдЬреЛ рд╢реЗрд░реЛрдЬрд╝рд╛ рдЬреАрдд рд╕рдХрддреА рд╣реИ?
рдЯрд┐рдк # 3
 th1{ bid.restricted = true; bid.checked = true; } ... th2{ while (!bid.checked) { sleep(1); } assert bid.restricted; // 99.999% } 

рджреГрд╢реНрдпрддрд╛ рдХреА рдХреЛрдИ рд╕рд╣рдЬ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 volatile boolean checked; 

рдЯрд┐рдк # 4
рдиреНрдпреВрдирддрдо рд╢рд░реНрдд рдХреНрдпрд╛ рд╣реИ рдЬреЛ рд╢реЗрд░реЛрдЬрд╝рд╛ рдЬреАрдд рд╕рдХрддреА рд╣реИ?
рдирд┐рд░реНрдгрдп

рдЬрд╡рд╛рдм рд╣реИ
 java.lang.Integer#MIN_VALUE 

рд╣рд╛рд▓рд╛рдБрдХрд┐, "0" рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "1" рдХреЛ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдорд╛рдирд╛ рдЧрдпрд╛ред

рд╡рд┐рдЬреЗрддрд╛рдУрдВ


рд╕рднреА рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛
- рдПрд╡рдЧреЗрдиреА рдЬреБрдмреЗрдВрдХреЛ
- рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдиреЛрд╡рд┐рдХреЛрд╡
- рдПрдВрдбреНрд░реА рдЧреЛрд▓рд┐рдХреЛрд╡

рд▓реЛрдЧреЛрдВ рдХреЛ рдмреНрд░рд╛рдВрдбреЗрдб рдмреИрдХрдкреИрдХ, рдЯреА-рд╢рд░реНрдЯ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрд┐рддрд╛рдмреЗрдВ рдорд┐рд▓реАрдВред

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


All Articles