在Javascript面试中很难

Hard in Javascript interview

本文关键字:很难 面试 Javascript      更新时间:2023-09-26

所有人。

几天前,一位面试官问了我一个问题。我无法回答。可能在这个网站上存在一些大师JS。=)

我们只有一个字符串VARNAME[byte][byte][byte][byte] [byte]在哪里放置一个字符。

问题:如果十六进制中的[字节][字节]对在十进制中必须不超过1000,JS如何正确编写?

我尝试以下:

1)VARNAME[20][3D][09][30]相等

2)VARNAME<space>=1<space>是正确的JS代码但是!

3) 十进制不正确的0x203D = 8253必须<=1000 0x0120 = 2352不正确的必须是<=1000!

我尝试在 20 上替换 09,然后:

0x093d = 2365它更好,但超过 1000 =(

我怎么能做到?面试官说这是可能的,因为char可以是任何(我的意思是

varname;<space><space><space>等等),但他不能告诉我答案。

谁能做到伙计们?

所描述的问题没有答案。

变量

引用后表达式上下文中可能出现的最低代码点是 'u0009,正如您所指出的,这将导致值大于 1000 (>= 2304)。ECMAScript 5 规范要求 JavaScript 环境在遇到无效字符时生成早期错误。这里唯一合法的字符是标识符继续字符或 InputElementDiv,它是空格行终止符注释令牌DivPunctuator,它们都不允许在 'u0000 - 'u0003 范围内的代码点,这是问题获得答案所必需的。

有些环境在遇到'u0000时终止解析(C 字符串结尾字符),但这些环境在这方面不符合 ES5。

JavaScript允许任何字符处于这个位置的说法是完全错误的。

但是,如果 VARNAME 在字符串或正则表达式中,这一切都会改变,它们都可以取 'u0000 - 'u0003 范围内的字符。如果这是面试官正在寻找的技巧,我只能说这是一个不公平的问题。

请记住,在面试中,你面试公司的次数与公司面试你的次数一样多,甚至更多。我会对加入一家认为这样的问题在面试中使用的有效问题的公司持严重保留态度。