java查找一个数等于一组数中哪些数字相加的和_从一个面试题看程序员的几项基本功...

前言

一个优秀的程序员具备挺多特质的,比如好奇心,学习能力等,但在我看来一个优秀的程序员必须具备几项核心能力,哪几项,先卖个关子,程序员最喜欢说的话是「Talk is Cheap, show me your code」,所以先来看一道很常见的面试题

如何快速定位IP对应的省份地址?

我们知道,每个省市都分配了一个 ip 段,如下

[202.102.133.0, 202.102.133.255]    山东东营市
[202.102.135.0, 202.102.136.255] 山东烟台
[202.102.156.34, 202.102.157.255] 山东青岛
[202.102.48.0, 202.102.48.255] 江苏宿迁
[202.102.49.15, 202.102.51.251] 江苏泰州
[202.102.56.0, 202.102.56.255] 江苏连云港

输入一个  ip 地址怎么做到秒级定位此 ip 所在的省市呢?

7f2a9dbdd95ec22dd5866f6955e2090a.png

如图示:在百度上输入一个 ip 地址,能做到秒级展示其所属地,怎么做到的呢,背后用到了什么原理

这就引入了我们要谈的程序员需要具备的第一项能力: 抽象问题或者说数据建模的能力

抽象问题的能力

所谓抽象问题或者说数据建模的能力,即能把一个问题抽象或归类为某种方案来解决,比如要实现负载均衡, 会想到一致性哈希算法,要实现最短路径,想到使用动态规划, 微服务下要保证服务可用引入降级机制等等,一句话就是把具体的问题抽象成到解决此问题背后的方法论,进而用相关的技术方案得以解决。

回归到如何快速定位 IP 对应的省份地址这道题来看,如果我们不具备抽象问题的能力,硬着头皮从头到尾把输入的ip 与所有区间段的 ip 都遍历对比一遍,然后判断它落到哪个区间,那么 ip 地址有 32 位,共有 2^32 个,约有  42.9 亿个,用暴力遍历法每查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值