两道面试题总结
3. 技术题
1.请写出下面sum的值
int sum = 0;
for(int i=0; i<10;i++)
{
for(int j=0;j<10;j++)
{
sum +=j;
}
}
分析:这道题考得是编程思想的应用
首先可以先计算内层for得45
然后外层:45*10=450
所以sum=450
2. N个人围成一圈,编号按顺序从1到N编号,从1号开始按照1,2,3,4顺序报数,报到4者出局并退出圈外,接下来的下一个人重新从1开始报数,报到4的人退出圈外,依次类推,请打印出最后剩余的人的编号和每个退出人的原序号,请用你最熟悉的编程语言实现
分析:重点是 怎么构造一个从1-N的循环。不过我这样写,如果数字很大,这个循环列表就非常大。不是一个好办法;
递归比较好,写一个方法传入初始列表和一个空列表,循环拆分到两个列表中,一个剩余的新列表一个踢出的新列表,把俩个列表在调用当前方法,直到结束,如果需要加停止状态的话多传入一个锁自增的长度就好。
n = 23 a = list(range(1,n+1)) out = [] #根据人数,最后无法再进行游戏时,根据总人数的问题,还剩3个人 final_rest_counts = 3 for index,number in enumerate(a): #如果不退出,就把该数添加到列表末尾制造循环,如1,2,3,4,5,6, 1,2,3,5,6 if (index+1) % 4 != 0: a.append(number) #如果退出,该数添加到outer里 [4] else: out.append(number) # print(a) # print(out) #当out人数为总人数-盘中剩余人数时,游戏结束 if len(out) == n-final_rest_counts: break print("winner = {}".format(a[-final_rest_counts:])) print("outer= {}".format(out)) print("ok")
3.# postgres 数据库语句查看表占用磁盘大小
### 1.查看单个数据库的存储空间占用
SELECT pg_size_pretty( pg_database_size('mydb') );
### 2.查看单张表的存储空间占用
SELECT pg_size_pretty( pg_total_relation_size('mytable') );
### 3.统计数据库中各表占用磁盘大小:
`SELECT
table_schema || '.' || table_name AS table_full_name,
pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC`
### 4.统计各数据库占用磁盘大小:
`
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS SIZE
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
4.