由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Simple Database设计问题,附code
相关主题
想请教一道面试题问一个阿三出的面试题: 什么是iterator invalidation?
Apple 电面设计题- consistent between key-value store and database1 DBA position
招聘网站管理实习生【求助】版里的前辈们 有人面过NetApp DBA 这个position吗?
service crash后,怎么解决database和cache数据不一致?雇主不能取消I-140的具体条件是什么?
c模拟c++的继承和多态请教一个题Common Ancestor(不是tree)
面试题:use bitmap to Implement a buddy system with APIs for setting and unsetting bits in the bitmap.求助:如何删除已经merge到master上的文件?
问三个问题,大大们帮忙看一下个人觉得leetcode还是原版的好啊
这里CS的大侠多,我想请教一个DATABASE的问题补充一下amazon的感受
相关话题的讨论汇总
话题: self话题: database话题: name话题: val话题: history
进入JobHunting版参与讨论
1 (共1页)
c*******4
发帖数: 51
1
详细信息在下面网址:
https://www.thumbtack.com/challenges/simple-database
面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
没有注意。
目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
题。
下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
import sys
class Database(object):
def __init__(self):
self._history = [] #list to store transaction history
self._database = {} #dictionary store key value pair
def BEGIN(self):
self._history.append({})
def SET(self, name, val):
if self._history:
if name in self._database and name not in self._history[-1]:
self._history[-1][name] = self._database[name]
if name not in self._database:
self._history[-1][name] = None
self.WriteToDB(name, val)
def GET(self, name):
if name in self._database:
print self._database[name]
else:
print 'NULL'
def NUMEQUALTO(self, val):
cnt=0
for key,value in self._database.items():
if value==val:
cnt+=1
print cnt
def UNSET(self, name):
if name in self._database:
self.SET(name, None)
def ROLLBACK(self):
if self._history:
for key, val in self._history[-1].items():
self.WriteToDB(key, val)
self._history.pop()
else:
print "NO TRANSACTION"
def COMMIT(self):
self._history = []
def WriteToDB(self, name, val): #Interface write to DB, Delete when val=
None
if val != None:
self._database[name] = val
else:
del self._database[name]
if __name__ == "__main__":
print "-----Simple Database Start-----"
ops = ['BEGIN', 'SET', 'GET', 'NUMEQUALTO', 'UNSET', 'ROLLBACK', 'COMMIT
']
linecounter = 1
linelimit = 100 #In case forget putting END in the input file.
data = Database()
line = sys.stdin.readline().strip()
while line != 'END':
if linecounter>linelimit:
print "Hit the linelimit. Current linelimit is {0}".format(
linelimit)
break;
args = line.split(' ')
if args[0] in ops:
f = getattr(Database, args[0]);
f(data,*args[1:])
else:
print 'INVALID INPUT In line:{0}...PASS LINE...'.format(
linecounter)
line = sys.stdin.readline().strip()
linecounter+=1
print "-----Simple Database End-----"
k*******n
发帖数: 16
2
我觉得这题目就是需要对NUMEQUALTO进行优化
我能想到的方法就是再给NUMEQUALTO建一个Table,以Value为key,set时候加1,
delete时候减1
然后Rollback和Commit的设计也相应的修改下

了。

【在 c*******4 的大作中提到】
: 详细信息在下面网址:
: https://www.thumbtack.com/challenges/simple-database
: 面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
: 只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
: 没有注意。
: 目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
: 题。
: 下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
: import sys
: class Database(object):

c*******4
发帖数: 51
3
很感谢

【在 k*******n 的大作中提到】
: 我觉得这题目就是需要对NUMEQUALTO进行优化
: 我能想到的方法就是再给NUMEQUALTO建一个Table,以Value为key,set时候加1,
: delete时候减1
: 然后Rollback和Commit的设计也相应的修改下
:
: 了。

x*******9
发帖数: 138
c*******4
发帖数: 51
5
详细信息在下面网址:
https://www.thumbtack.com/challenges/simple-database
面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
没有注意。
目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
题。
下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
import sys
class Database(object):
def __init__(self):
self._history = [] #list to store transaction history
self._database = {} #dictionary store key value pair
def BEGIN(self):
self._history.append({})
def SET(self, name, val):
if self._history:
if name in self._database and name not in self._history[-1]:
self._history[-1][name] = self._database[name]
if name not in self._database:
self._history[-1][name] = None
self.WriteToDB(name, val)
def GET(self, name):
if name in self._database:
print self._database[name]
else:
print 'NULL'
def NUMEQUALTO(self, val):
cnt=0
for key,value in self._database.items():
if value==val:
cnt+=1
print cnt
def UNSET(self, name):
if name in self._database:
self.SET(name, None)
def ROLLBACK(self):
if self._history:
for key, val in self._history[-1].items():
self.WriteToDB(key, val)
self._history.pop()
else:
print "NO TRANSACTION"
def COMMIT(self):
self._history = []
def WriteToDB(self, name, val): #Interface write to DB, Delete when val=
None
if val != None:
self._database[name] = val
else:
del self._database[name]
if __name__ == "__main__":
print "-----Simple Database Start-----"
ops = ['BEGIN', 'SET', 'GET', 'NUMEQUALTO', 'UNSET', 'ROLLBACK', 'COMMIT
']
linecounter = 1
linelimit = 100 #In case forget putting END in the input file.
data = Database()
line = sys.stdin.readline().strip()
while line != 'END':
if linecounter>linelimit:
print "Hit the linelimit. Current linelimit is {0}".format(
linelimit)
break;
args = line.split(' ')
if args[0] in ops:
f = getattr(Database, args[0]);
f(data,*args[1:])
else:
print 'INVALID INPUT In line:{0}...PASS LINE...'.format(
linecounter)
line = sys.stdin.readline().strip()
linecounter+=1
print "-----Simple Database End-----"
k*******n
发帖数: 16
6
我觉得这题目就是需要对NUMEQUALTO进行优化
我能想到的方法就是再给NUMEQUALTO建一个Table,以Value为key,set时候加1,
delete时候减1
然后Rollback和Commit的设计也相应的修改下

了。

【在 c*******4 的大作中提到】
: 详细信息在下面网址:
: https://www.thumbtack.com/challenges/simple-database
: 面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
: 只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
: 没有注意。
: 目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
: 题。
: 下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
: import sys
: class Database(object):

c*******4
发帖数: 51
7
很感谢

【在 k*******n 的大作中提到】
: 我觉得这题目就是需要对NUMEQUALTO进行优化
: 我能想到的方法就是再给NUMEQUALTO建一个Table,以Value为key,set时候加1,
: delete时候减1
: 然后Rollback和Commit的设计也相应的修改下
:
: 了。

x*******9
发帖数: 138
c*******4
发帖数: 51
9
很感谢: )
我先看看研究研究

【在 x*******9 的大作中提到】
: https://github.com/Wizmann/Simple-Database-Challenge
: 用C++写的

j**********3
发帖数: 3211
10
mark
f*******r
发帖数: 976
11
这种题目都出来了,难度不小啊

详细信息在下面网址:
https://www.thumbtack.com/challenges/simple-database
面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
没有注意。
目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
题。
下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
import sys
class Database(object):
def __init__(self):
self._history = [] #list to store transaction history
self._database = {} #dictionary store key value pair
def BEGIN(self):
self._history.append({})
def SET(self, name, val):
if self._history:
if name in self._database and name not in self._history[-1]:
self._history[-1][name] = self._database[name]
if name not in self._database:
self._history[-1][name] = None
self.WriteToDB(name, val)
def GET(self, name):
if name in self._database:
print self._database[name]
else:
print 'NULL'
def NUMEQUALTO(self, val):
cnt=0
for key,value in self._database.items():
if value==val:
cnt+=1
print cnt
def UNSET(self, name):
if name in self._database:
self.SET(name, None)
def ROLLBACK(self):
if self._history:
for key, val in self._history[-1].items():
self.WriteToDB(key, val)
self._history.pop()
else:
print "NO TRANSACTION"
def COMMIT(self):
self._history = []
def WriteToDB(self, name, val): #Interface write to DB, Delete when val=
None
if val != None:
self._database[name] = val
else:
del self._database[name]
if __name__ == "__main__":
print "-----Simple Database Start-----"
ops = ['BEGIN', 'SET', 'GET', 'NUMEQUALTO', 'UNSET', 'ROLLBACK', 'COMMIT
']
linecounter = 1
linelimit = 100 #In case forget putting END in the input file.
data = Database()
line = sys.stdin.readline().strip()
while line != 'END':
if linecounter>linelimit:
print "Hit the linelimit. Current linelimit is {0}".format(
linelimit)
break;
args = line.split(' ')
if args[0] in ops:
f = getattr(Database, args[0]);
f(data,*args[1:])
else:
print 'INVALID INPUT In line:{0}...PASS LINE...'.format(
linecounter)
line = sys.stdin.readline().strip()
linecounter+=1
print "-----Simple Database End-----"

【在 c*******4 的大作中提到】
: 详细信息在下面网址:
: https://www.thumbtack.com/challenges/simple-database
: 面试一道题目,题目是设计一个Simple Database,我提交的解法说有问题然后被拒了。
: 只想各位大神帮我看看code有哪些毛病,feedback说算法不是最优的,function大小写
: 没有注意。
: 目前我觉得自己问题在NUMEQUALTO复杂度n不是1,方程都大写了,想请教下还有什么问
: 题。
: 下面是我python的代码。再次感谢大家的帮助,我只想知道代码哪里还出了问题。
: import sys
: class Database(object):

1 (共1页)
进入JobHunting版参与讨论
相关主题
补充一下amazon的感受c模拟c++的继承和多态
我老来说说亚马逊的build-deploy系统面试题:use bitmap to Implement a buddy system with APIs for setting and unsetting bits in the bitmap.
Box 2 hour coding exercise问三个问题,大大们帮忙看一下
FB architecture 很老旧啊这里CS的大侠多,我想请教一个DATABASE的问题
想请教一道面试题问一个阿三出的面试题: 什么是iterator invalidation?
Apple 电面设计题- consistent between key-value store and database1 DBA position
招聘网站管理实习生【求助】版里的前辈们 有人面过NetApp DBA 这个position吗?
service crash后,怎么解决database和cache数据不一致?雇主不能取消I-140的具体条件是什么?
相关话题的讨论汇总
话题: self话题: database话题: name话题: val话题: history