V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aguesuka  ›  全部回复第 36 页 / 共 46 页
回复总数  904
1 ... 32  33  34  35  36  37  38  39  40  41 ... 46  
2020-02-29 23:13:41 +08:00
回复了 jdz 创建的主题 程序员 你们面试前或平常会刷面试题吗
@helloworld000 leetcode 这么靠前的题。

不过你想复杂了。首先我不需要排序,其次我的接口可以这么写 T add(E elment); boolean remove(E element, T token);类似 js 的 setTimeout 和 clearTimeout 函数。还有个隐藏条件是一个 elenment 只会 add 一次,容器只会被遍历一次。

最快的方法是使用一个 Array 和一个 Stack,Array 在没有元素被删除的时候正常增加,有元素被删除的时候把被删除元素下标保存到 Stack 里面,如果 Stack 不为空,则增加时优先使用 Stack 里的下标。不过在使用时要考虑的比这个多,要不要实现 Collection 接口,token 保存在哪,遍历时要不要快速失败,如果要改成并发容器需要多大工作量。最关键的是不做基准测试很难知道到底那个实现快,比如你猜同样是 O(1),用链表快还是散列表快。

跑题了,我觉得刷算法题性价比的原因是要花很大精力去写很脏的代码,去实现不灵活的接口,当然学到的经验很宝贵,但是在写代码时只是最基本的素质,而在面试时,手写的代码面试官也不会看,说出原理就行了。
2020-02-29 14:25:31 +08:00
回复了 jdz 创建的主题 程序员 你们面试前或平常会刷面试题吗
写过需要算法的项目后,发现刷算法题是一个性价比非常低的事情。
比如我需要一个数据结构,操作只有 3 种,就是增加,删除和无序遍历。刷算法题的经验告诉我这种东西最适合用双向链表做,增加时返回 node,删除时移除 node,遍历写个 for 循环就行。增加删除的复杂度是 O ( 1 ),遍历的复杂度是 O ( n ).可再我使用的实际场景种还不如一个数组,时间复杂度是 O ( n )的根据下标增加和删除,因为在我这个量级创建对象的时间更慢(论坛里曾有人说绝对不要使用 LinkedList 时,我曾经很不屑)。而实际上,有个《数据结构》里没有的数据结构可以用 Array 来完成 O(1),O(1)的按下标删除和增加。
最后我选择了用 HashSet,不是应为它最快,而是因为它不需要保存下标或者 node 等待删除时使用,避免让程序变得复杂。
第一个问题的解法还是不好
java 的 arraylist 是 timsort
2020-02-26 12:34:59 +08:00
回复了 Drinker 创建的主题 Java 一个 Java 项目如果需要启用上万个 websocket,有什么好办法么
理论上 nio10k 个 tcp 连接没有问题,用 netty 试试呗。我估计系统瓶颈 io,cpu,然后才是内存
2020-02-23 23:20:47 +08:00
回复了 neurocomputing 创建的主题 云计算 云游戏有出路吗?
如果有云游戏 csgo 吃鸡就可以从根本消灭透视,不过我预计这两个游戏到死都会有挂
2020-02-23 11:39:16 +08:00
回复了 aguesuka 创建的主题 Java NIO 里面, SocketChannel.connect 的时候发生了什么?
@leonme open 的速度大概是 0.1ms/次。时间的大头在 connect 哪里(虽然 open 也很慢)
把相同的单词抽离,放在一个 class 里,intoRedis 改成 cache。判断一个对象和其他对象的关系时,不要用数据模型,而是用业务模型。比如'检查用户是否注册'改为'用户(class)'#'is 注册(method)'
2020-02-21 18:28:50 +08:00
回复了 hoston2008 创建的主题 职场话题 面试过程遇到问父母职业的
@qiushaox 政治审核
2020-02-21 13:47:03 +08:00
回复了 Rugal 创建的主题 Java 想推广下自己写的 maven 插件用来规范 git commit message
同意头上,应该仍在 git pre commit hook
2020-02-20 16:36:02 +08:00
回复了 rqxiao 创建的主题 程序员 Java 中 list 一个集合的展示
2020-02-20 16:31:46 +08:00
回复了 rqxiao 创建的主题 程序员 Java 中 list 一个集合的展示
按照我的理解,比如现在如果有 2 个组,3 个 code,你就要返回一个 size 是 2 的 json 数组,数组中是 map,map 里至少包括 3 个 code (可能还有组名或 id )。而你查询的数据如果没有则默认为 0。按照你当前的写法,如果有 n 个组,数组长 m 循环次数是 n * m。
我觉得你可以实现可以 DoubleKeyMap,第一次循环 list,DoubleKeyMap.put(group, code, count) 然后有两个 key set,做一次双重循环,getOrDefult(0)。

https://www.antlr.org/api/JavaTool/org/antlr/v4/runtime/misc/DoubleKeyMap.html
2020-02-18 09:49:03 +08:00
回复了 Windsooon 创建的主题 程序员 阿里的随机数面试题思路分享
import random
from collections import Counter

foo_count = 0


def foo() -> int:
global foo_count
foo_count += 1
return random.choice([0, 1])


def bar(i):
return do_bar(i, 0, 1)


def do_bar(i: int, remaining: int, size: int) -> int:
size = size << 1
remaining = remaining << 1 | foo()

if size == i:
return remaining
elif size < i:
return do_bar(i, remaining, size)
size -= i
if remaining >= i:
remaining -= i
return do_bar(i, remaining, size)
else:
return remaining


random_count = 1000000
print(Counter([bar(10) for i in range(random_count)]))
print(foo_count / random_count)
"""
Counter({4: 100691, 8: 100638, 9: 100209, 6: 99923, 0: 99874, 3: 99838, 1: 99820, 7: 99745, 5: 99715, 2: 99547})
4.600133
"""
2020-02-18 09:10:24 +08:00
回复了 zjq123 创建的主题 Java Java 除了常驻内存现成的东西多生态大 还有什么优点
我觉得,java 最大的优点是运行前尽可能会把错误检查出来,然后写的好的代码相当于自带文档,语法足够简单,调用别人写的代码配以 ide 一路点下去就行
2020-02-14 13:56:48 +08:00
回复了 insurgo222 创建的主题 浏览器 你们会为了个人隐私放弃 Chrome 吗?
木桶效应。用不用 chrome 老大哥都在看着我
2020-02-12 21:58:43 +08:00
回复了 mmdsun 创建的主题 MySQL 请问这个 SQL 怎么写
oracle 有专门的函数,rownumb over partition,mysql 应该也有
2020-02-11 11:44:34 +08:00
回复了 jfzhangak 创建的主题 程序员 情人节小程序
window.onload= () => gotoTaobaoAndSearch("口红")
最简单的。自己写一个同样包名,同样 class 名的 java 文件。加载时会优先加载你的文件
1 ... 32  33  34  35  36  37  38  39  40  41 ... 46  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2959 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 05:00 · PVG 13:00 · LAX 22:00 · JFK 01:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.