一道难倒不少前端面试者的问题

有一数组,里面有若干(数目和薪资一样多)数字,数字有重复,如何找出重复次数最多的数字


这个问题每次和组员面试时必问,其中能够理出逻辑过程的不到一半,大部分都是先声明一个空数组,然后经过数次循环对比处理,而首先声明空对象的不多(数据结构很重要呀!!!这是我们非科班的硬伤)。
常规答案如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let a = [1, 2, 6, 8, 9, 5, 2, 5, 6, 5, 5, 2, 5, 5];   
let numCount = {}, maxCountNum = 0, maxNum;
for (let i = 0, j = a.length; i < j; i++) {
if (a[i] in numCount) {
numCount[a[i]] += 1
} else {
numCount[a[i]] = 1
}
if (numCount[a[i]] > maxCountNum) {
maxNum = a[i];

maxCountNum=numCount[a[i]]

}

}
console.log(maxNum)

曾经看到有人说通过一句js代码就可以实现,只是这个地方太小,他写不下了。这句话怎么似曾相似呢。。。。

17世纪初,欧洲流传着公元三世纪古希腊数学家丢番图所写的《算术》一书。1621年,费马在巴黎买到此书并利用业余时间书中的不定方程进行了深入研究,从而创立了数论这门数学分支。在数论领域中,费马的巨大成果主要是费马大定理和费马小定理。其中以费马大定理最为著名。

1637年左右,费马在阅读丢番图《算术》的拉丁文译本时,曾在第11卷第8命题旁写道:“将一个立方数分成两个立方数之和,或一个四次幂分成两个四次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信已发现了一种美妙的证法,可惜这里空白的地方太小,写不下。”

这就是著名的费马大定理:当整数n>2时,关于x,y,z的方程没有正整数解。
费马大定理也叫“费马最后的定理”,“最后”的意思是:其它猜想都证实了,这是最后一个。费马究竟有没有证明费马大定理,至今是人们津津乐道的话题。费马大定理被提出后,经历多人猜想辩证,历经三百多年的历史,才于1995年由英国数学家怀尔斯证明,且其证明的过程相当艰深。
费马大定理

话说回来,对于一行代码实现文章开头的问题,我开始是深信不疑的,然后今天尝试了一下,最后想法遭到了动摇。
在不声明其他变量的情况,我是这样写的:

1
2
let a = [1, 2, 6, 8, 9, 5, 2, 5, 6, 5, 5, 2, 5, 5];
a.map((value, index) => {if (index === 0) {a[a.length] = {};a[a.length - 1][value] = 1;a[a.length] = value} else {if (value in a[a.length - 2]) {a[a.length - 2][value] += 1;if (a[a.length - 2][value] > a[a.length - 1]) {a[a.length - 1] =value}}else {a[a.length - 2][value] = 1}}if(index+3===a.length)console.log(a[a.length-1])})

实际上面一行是伪代码,ctrl+Alt+L格式化一下,重新排版成酱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a.map((value, index) => {
if (index === 0) {
a[a.length] = {};
a[a.length - 1][value] = 1;
a[a.length] = value
} else {
if (value in a[a.length - 2]) {
a[a.length - 2][value] += 1;
if (a[a.length - 2][value] > a[a.length - 1]) {
a[a.length - 1] = value
}
} else {
a[a.length - 2][value] = 1
}
}
if (index + 3 === a.length) console.log(a[a.length - 1])
})

看起来更复杂了,有兴趣的小伙伴可以试一试,欢迎留言交流

发现一个大坑!!!

本篇文章是为了重现element-ui的新版本(2.9.1)BUG所提交的issue

前几天没事重新安装了依赖,也是闲的蛋疼,更新完后就悲剧了,表格高度全都变为100px。
100px!!!
然后捯饬了半天,一直到今天上午,what the f//K!。
这个问题解决不了,因此自己无法打包工程部署,只能麻烦组员了。
下午决定再次攻克一下:

**使用排除法

1、排除开发环境:操作系统+idea+npm+node+vue版本都一致;
2、排除代码错误:都在git上同一分支下;
3、排除接口数据:都是同一个后台接口环境;

以上,那么真相只有一个:都是蛋疼惹的事—依赖版本

**破案过程:
由于package.json中声明所有依赖使用最新版本,所以写了一个脚本放在我和组员的依赖文件夹(node_modules)下,获取安装依赖的名称和版本;
然后使用notepad++中的compare插件对比,才发现是element-ui的版本不一致,去其官网查看,果然半个月前更新了版本,然后区GitHub的代码仓库查看release,下图可以说明一些问题,
element-ui 2.9.1
于是回退版本,这个鸟问题终于解决了!
目前的解决方案是将将package.json中的

1
"element-ui": "^2.8.2",

改为

1
"element-ui": "2.8.2",

记录贼坑一件事

昨天下班前将某个地区的所有站点发布成服务,数据保存在mysql中,但是老是显示不了,中间考虑了特殊字符,站点堆叠的原因,都不对。
最后发现是空间几何字段的空间参考不一致的问题,233333.

ArcGIS Enterprise中Portal发布场景服务后无法查看

大家都知道ArcGIS现在整个产品体系特别庞大,以我来看,个人是不能将所有的产品学到精通的,毕竟整个产品已经年近五旬,积累沉淀的东西非一人所能穷尽的。
现在就说一下ArcGIS Enterprise,俗称”ArcGIS 全家桶“套餐,为什么这么叫呢,因为之前这个系统有多个组件。ArcGIS Enterprise 在是在10.5版本以后才叫这个名字的,算是一个统称,包括了Portal Server Datastore Webadaptor,所以需要一个个组件安装,并且有一定的部署顺序,如果不太熟悉这个流程,好不容易在漫长的安装过程之后,出现令人崩溃的不能用,排查问题的时候又很困难,所以,目前这套系统再生产环境中需要Esri官方技术人员现场部署,以保证系统的安全。

点击继续阅读

接下来假期的安排

调休了这么多天,终于迎来了14天的假期
1、
一定要将JAVA基础看一遍!!!一定要将JAVA基础看一遍!!!一定要将JAVA基础看一遍!!!
2、
学习Spring Boot
3、
学习Spring Cloud

以上的目标,就是为了写接口不再求人。

期间顺便将2018没读完的书看完。

去国家图书馆呆一天,爬爬香山。

================
2019,只关心粮食和蔬菜。

记述二三事

1、
发现geoserver的一个BUG。使用mysql中的数据发布图层服务,能正常发布和显示加载,但是地图单击后,无法获得属性信息,报未知错误,百思不得其解,排查了好几天,使用排除法,原来是数据库表中的一个字段使用的是tinyint类型,内容是数字,貌似这样geoserver无法处理。。。
2、
早晨自己写了一个福,扫出来‘敬业福’。自己就是自己最大的福星。
3、
过去就过去了,回不到过去。就算旧友重拾,也不知道怎么去维护下去。

年底-昨天、今天、明天

眼见2018年的最后一个月已过了一半,真快!回想这一年,心中不免五味杂陈。

如果要用两个字形容这一年,那就是:【折腾】,不过人生不就是折腾来折腾去么,倒也符合常态。但总有些与众不同,有些注定在未来某一天成为突然想起的尘封记忆,或喜、或悲、或怒、亦或是波澜不惊,也许现在难以想象的到。

那就开始蒙太奇的回忆吧。。。

从去年2017的年底开始,当时对于下一年的所思所想做了一些SWOT的分析,之后充满了焦虑,还自诩为我的”焦虑元年“,然而确实就这样伴随了我的2018年,90后的”中年危机“就这么来了,有时感觉自己特没主见,作为一个男人真不应该,别人稍微将你聊开了,你就和盘托出,于是逢人就像祥林嫂一样诉说自己的忧虑和担心,但是回过头来,读了一些书,看了一些东西,这样做没有什么意义,将自己切身的感受说给别人听,不管你描述得多么生动,别人几乎是随心而过,感同身受是无法实现的,大家作为一个个个体,又无责为你承担些什么。有些时候,未来的路只能沉默的走下去,要面对这个现实。

《月亮与六便士》里有这么一段描述:我们每个人生在这个世界上都是孤独的。每个人都被囚禁在一座铁塔里,只能靠一些符号同别人传达自己的思想;而这些符号并没有共同的价值,因此他们的意义是模糊的、不确定的。我们非常可怜地想把自己心中的财富传送给别人,但是他们却没有接受这些财富的能力。因此我们只能孤独地行走,尽管身体互相依傍却并不在一起,即不了解别人也不能为别人所了解。这句话简直妙不可及。

有这么个映像:人们对于第一件事,不管其为自己带来了什么,或许都难以忘怀,比如第一份工作、第一次做饭、第一次青涩感情的投入(提到这个,翻涌出阵呕~~~)。

从2016年乘着火车,穿过漫天黄沙的戈壁,从西北一所垂垂老矣、难以回春的大学(所以也没有跟着老师继续读博,容我目光所限)来到帝都,经过数不清的面试,终于进入了一家业内有名气的公司,接到录用通知时,和2013年考上研究生一样,兴奋了许久,倍感珍惜(这词在第一次做的事情上应该通用),想想当时也够单纯,各种正当的要求都没认真的去了解和争取,都草草的入了职,丝毫没有人生规划和职业发展的战略思考。接下来的两年里学习了一些东西,重点是认识了不少人,好像每天感觉很充实,当时自己精力充沛,极力摸索,早出晚归,不放过周末节假日,不去了解除工作意外的东西,像上学一样封闭自己,两耳不闻世事,但年初的总结里,隐隐约约里看到了虚假的充实,这种带有自欺欺人、难以有较大提升的感觉,充斥每天的情绪,周围的同事很好、领导也很好,不好的是自己。然后还有前面提到的原因(可能这个是最大的原因所在,下面细说),最后得到了答案:该换份工作了。

马云曾说,换工作无非有两个原因:一是对老板不爽;二是对工资不满意。实话说我来这个公司两年,虽然时不时见到大BOSS,但真的从来没说过话,交集为零,直属的三个(没错,就是三个,两个女领导,一个男领导)领导都很不错,所以这一条不存在。然后应该就是第二个,没错,我承认自己很俗,也没办法,当时促使我慎重思考薪资的,是因为一件事。在一线租房真是很痛苦的事,想想每天早出晚归,累的不行,每个月将自己工资的很大部分,给了每天提着鸟笼子的北京土著房东(这里没有地域感情色彩),真的很心痛,但是没办法,谁让自己来大城市求食、求生存呢。然后就是这么操着某地域口音(这里有些地域色彩,但我非以偏概全,)的一群人,接管了房东(懒成啥样。。。,最后不还是自己自作自受)的房子,用一些下三滥的手段诈取钱财,让北漂们露宿街头。光天化日,朗朗乾坤,帝都就这么真真切切发生近似明抢的强盗行为。作为当时的受害者,真是气愤呀!!!某个夜晚有了单纯的世俗想法:再挣多点,心就不会这么疼了。

都说开发工资高,凭着两年的自学和积累,然后从公司的开发者大会之前开始,那段时间每晚在一些招聘网站,像两年前一样海投了一番,陆陆续续接到一些求职反馈,基本是拒绝的,大概是看到没有实际的开发经验,然后就在开发者大会那天,终于接到来自深圳座机来电,聊了一些后,下午从会场直接过了去。

。。。。。待续

多读书、多思考、会折腾(突然想到这句话,暂时记上)