本文目录一览:
- 1、程序员面试必备PHP基础面试题 – 第十一天
- 2、PHP程序员上机面试题(并附答案,回答好的加分)
- 3、php面试题解答
- 4、腾讯PHP面试题,PHP如何模拟POST提交登录?求详细代码
- 5、腾讯面试题整理及经验技巧
程序员面试必备PHP基础面试题 – 第十一天
一、两张表 city表和province表。分别为城市与省份的关系表。
表名:city
id City Provinceid
1 广州 1
2 深圳 1
3 惠州 1
4 长沙 2
5 武汉 3
………. 广州
表名称:province:
id Province
1 广东
2 湖南
3 湖北
……….
1、写一条sql语句关系两个表,实现:显示城市的基本信息。显示字段:城市id ,城市名, 所属省份 。
如:
Id(城市id) Cityname(城市名) Privence(所属省份)
2、如果要统计每个省份有多少个城市,请用group by 查询出来。显示字段:省份id ,省份名,包含多少个城市。
二、主键 和外键表示什么?一般用于做什么?
主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。
外键:若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。A为基本表,B为信息表。
在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根据
主键的值来确定不同的记录。
关系:外键一定是另外某个表的主键。
三、select now(),Date_ADD(now(),INTERVAL 14 day),Date_SUB(now(),INTERVAL 3 Day) from table; 会获得什么内容,请写出来。
会获得三条数据:
第一条:当前时间;
第二条:当前时间加上14天;
第三条:当前时间减去3天。
四、您所知道的MYSQL 数据库备份,还原方式有哪几种?
备份:
一,搭建主从架构,master-slave,通过binlog文件同步复制主库的数据,也可以直接通过binlog文件恢复数据。
二,通过系统计划任务执行mysqldump做周期性全备份。
三,物理备份,直接拷贝数据文件、参数文件、日志文件。
还原:
一.通过mysql操作工具,如phpmyadmin,sqlyog等导入备份过的数据库文件。
二.将物理备份的文件拷贝到mysql的data目录下
五、内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
创建上表,写出MySQL语句
六、同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示0
七、内容管理系统,表category保存分类信息,字段如下
category_id int(4) not null auto_increment;
category_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
八、PHP文件操作
1、内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
2、简单描述用户修改发布内容的实现流程和基本思路
1)当用户提交后生成一个由url地址MD5后的文件的编译页面,用文件处理file函数生成一个模板合成页,判断模板编译页是否有,模板页无或者编译页的创建时间戳小于模板页的修改时间都会从新生成编译页面,编译后的页面会调用对应数据库的值显示在页面中,通过对内存数据的读取释放,显示出我们看到的静态数据,然后用file文件将其保存起来生成静态的页面
2)当用户修改了发布内容都会修改数据相关的内容,并通过编译页面更新静态数据并用文件的方式缓存起来,当用户查看时将不做任何数据库查找,直接调用该缓存文件即可
PHP程序员上机面试题(并附答案,回答好的加分)
某大公司的PHP面试题
管理提醒: 本帖被 haowubai 执行取消置顶操作(2009-07-30)
1. 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?
[php]
echo $_SERVER ['PHP_SELF'];
echo $_SERVER ['SERVER_ADDR'];
[/php]
2. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
[php]
$begin=strtotime('2007-2-5');
$end=strtotime('2007-3-6');
echo ($end-$begin)/(24*3600);
[/php]
3. 请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
[php]
function changeStyle( $str) {
/*$str = str_replace ( "_", " ", $str );
$str = ucwords ( $str );
$str = str_replace ( " ", "", $str );
return $str;*/
$arrStr=explode('_',$str);
foreach($arrStr as $key=$value){
$arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);
}
return implode('',$arrStr);
}
$s = "open_door";
echo changeStyle ( $s );
[/php]
4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:
[php]$arr1 = array (
'0' = array ('fid' = 1, 'tid' = 1, 'name' ='Name1' ),
'1' = array ('fid' = 1, 'tid' = 2 , 'name' ='Name2' ),
'2' = array ('fid' = 1, 'tid' = 5 , 'name' ='Name3' ),
'3' = array ('fid' = 1, 'tid' = 7 , 'name' ='Name4' ),
'4' = array ('fid' = 3, 'tid' = 9, 'name' ='Name5' )
);
$arr2 = array (
'0' = array (
'0' = array ( 'tid' = 1, 'name' = 'Name1'),
'1' = array ( 'tid' = 2, 'name' = 'Name2'),
'2' = array ( 'tid' = 5, 'name' = 'Name3'),
'3' = array ( 'tid' = 7, 'name' = 'Name4')
),
'1' = array (
'0' = array ( 'tid' = 9, 'name' = 'Name5' )
)
);
?php
$arr1 = array (
'0' = array ('fid' = 1, 'tid' = 1, 'name' ='Name1' ),
'1' = array ('fid' = 1, 'tid' = 2 , 'name' ='Name2' ),
'2' = array ('fid' = 1, 'tid' = 5 , 'name' ='Name3' ),
'3' = array ('fid' = 1, 'tid' = 7 , 'name' ='Name4' ),
'4' = array ('fid' = 3, 'tid' = 9, 'name' ='Name5' )
);
function changeArrayStyle($arr){
foreach($arr as $key=$value){
$result[$value['fid']][]=$value;
}
return array_values($result);
}
$arr2=changeArrayStyle($arr1);
echo "pre";
var_dump($arr2);
[/php]
5. 请简述数据库设计的范式及应用。
一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。
ANSWER:
第一范式:若关系模式R的每一个属性是不可再分解的,再属于第一范式。
第二范式:若R属于第一范式,且所有的非码属性都完全函数依赖于码属性,则为第二范式。
第三范式:若R属于第二范式,且所有的非码属性没有一个是传递函数依赖于候选码,则属于第三范式。
6.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。
存储过程:
[php]
DELIMITER //
create procedure proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;
[/php]
视图:
create view v_countNum as select member_id,count(*) as countNum from member group by member_id
select countNum from v_countNum where member_id=1
7 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
[php]select
case
when first_namemiddle_name then
case when first_namelast_name then first_name
else last_name end
else
case when middle_namelast_name then middle_name else last_name
end
end as name
from member
[/php]
8请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?
ANSWER: sql优化有鸟用,不如直接加索引。
9 如果模板是用smarty模板。怎样用section语句来显示一个名为$data的数组。比如:
[php]$data = array(
[0] = array( [id]=8 [name]=’name1′)
[1] = array( [id]=10 [name]=’name2′)
[2] = array( [id]=15 [name]=’name3′)
……
)[/php]
写出在模板页的代码? 若用foreach语句又要怎样显示呢?
占无答案.
10 写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。(目录操作)
[php] ?php
$d = dir(dirname(__file__));
//echo "Handle: " . $d-handle . "\n";
//echo "Path: " . $d-path . "\n";
while ( false !== ($entry = $d-read ()) ) {
echo $entry . "br /";
}
$d-close ();
[/php]
11 两张表 city表和province表。分别为城市与省份的关系表。
city:
id City Provinceid
1 广州 1
2 深圳 1
3 惠州 1
4 长沙 2
5 武汉 3
………. 广州
province:
id Province
1 广东
2 湖南
3 湖北
……….
(1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?
(2) 显示字段:城市id ,城市名, 所属省份 。
如:
Id(城市id) Cityname(城市名) Privence(所属省份)
。。。。。。。。。
。。。。。。。。。
(2)如果要统计每个省份有多少个城市,请用group by 查询出来。?
显示字段:省份id ,省份名,包含多少个城市。
ANSWER:
1.select A.id,A.Cityname,B.Province from city A,province B where A.provinceid=B.id
2.select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id
12. 按照你的经验请简述软件工程进行软件开发的步骤。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用过那种,有缺点是什么?
公司用dbdesigner及cvs,测试管理工具用的是Mantis
13. 请简述操作系统的线程与进程的区别。列举LINUX下面你使用过的软件?
14. 请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。
[php]function bubble_sort( $arr){
$number=count($arr);
for($i=0;$i$number-1;$i++){
for($j=0;$j$number-1-$i;$j++){
if($arr[$j]$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
}
$str="10 2 36 14 10 25 23 85 99 45";
$arr=explode(" ",$str);
bubble_sort($arr);
echo "pre";
var_dump($arr);
[/php]
php面试题解答
1,
var x=document.getElementById("img1");
var title=document.getElementById("img1").title;
var sina_title=document.getElementById("img1").sina_title;
2,serialize(),unserialize();
3,编码方式不同,urlencode()将字串以URL编码。例如空格就会变成加号。
rawurlencode()将url编码成url的字符串专用格式,特殊字符回转换成百分号后面加两个十六子介数字的格式。
4,strip_tags(),html_entity_decode();
5,$str=preg_replace("/\script.*\.*\\/script\/i","",$str);
6,左连接,左连接的表如果没有匹配的数据不影响结果。
7
SELECT name,score FROM tl_user LEFT JOIN tl_score ON tl_user.ID=tl_score.ID
7 system(),exec(),passthru()
8,json_decode ,json_encode
9 isset() empty()
10 后者的权限大于前者,后者是OFF的话,前者就算是E-ALL也没用。
11,$_SERVER['REMOTE_ADDR'];
12,incov()
echo iconv("gbk",""UTF-8,"我们");
mb_convert_encoding($str, "GBK", "UTF-8")
13 explode() split() ;implode() join()
14 注意事项挺多的,懒得写。
二
1,超时,服务器已经关闭连接
2 静态表字段长度固定,自动填充,读写速度很快,便于缓存和修复,但比较占硬盘,动态表是字段长度不固定,节省硬盘,但更复杂,容易产生碎片,速度慢,出问题后不容易重建。
3InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。
1.MySQL最大的优势在于MyISAM引擎下的简单SELECT,INSERT和UPDATE快速操作
2.MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。
以下是一些细节和具体实现的差别:
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
以暂对存储引擎的认识,觉得 InnoDB 支持外键,在数据量可以用“庞大”来形容时,在有良好的 INDEX 的基础上,InnoDB 的查询速度应该比 MyISAM 要快。
在 Falcon 有稳定版本前,我想 MyISAM 是一个可用的选择方案。
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势
3, 都是1 ^^懒得回答了,睡觉去。
腾讯PHP面试题,PHP如何模拟POST提交登录?求详细代码
大概流程是
先构建要传输的数据
再使用php的stocket模拟post请求
例子,比如我打开这个页面所用到的数据就是(这里用的是GET请求,改成POST就行了)
构造出以上的字符串,然后使用stocket发送出去即可
$fp = fsockopen(主机ip,端口号);
fputs($fp, 数据字符串);
while(!feof($fp)) {
//这里是输出请求所得到的回应数据
$result .= fgets($fp, 128);
}
更多请自行百度php模拟post请求
因为我以前在工程实例中做过,所以比较了解
纯手打,望采纳
话说,这个问题过了就能进腾讯?门槛太低了吧。。。
腾讯面试题整理及经验技巧
本人IT屌丝一枚,毕业4年,5年经验(大四在腾讯实习一年,实习生工资,工作内容同正式员工一样)。非常幸运,先后收到过腾讯、百度和阿里的offer,在这里跟大家分享下腾讯面试经验,同诸君共勉。
本人职业生涯的起点开始于腾讯,能入职腾讯其实非常偶然。09年腾讯校招的时候,在本人的学校(学校是2本就不说名字了)开宣讲会,学院很多同学都去了,因为当时对腾讯兴趣不大所以没去,当时希望去中软金蝶这样的传统软件公司。一个宿舍的兄弟要去参加腾讯校招的笔试,我作为亲友团陪他一起去。腾讯的hr很nice给了我一张笔试题和意愿表让我填。本来我想从学校北门直接坐车回家,既然来了反正也没什么事就写了,算是为以后找工作热身。腾讯面试笔试内容主要是编程基础和排序查找算法之类的题,还有用程序实现递归这样的,具体的忘记了。
笔试题感觉很简单,附加题也答上了(本人专业课学霸、其他科学渣)。答完也没检查就坐车回家了,吃饭的时候收到腾讯叫我第二天去一面的短信,刚好我爸爸妈妈在南山的同学去我家做客,就乘阿姨的顺风车回学校准备第二天的面试。
腾讯一面的面试官非常的nice也是我后来的组长,非常有人格魅力的一个人,我去的时候还特意给我倒了一杯水。腾讯面试官员主要问我了解的技术,我就介绍了下在大学期间做的C++、.Net和J2EE项目,规则引擎、财务系统、学业预警系统、爬虫引擎这些。因为完全没准备所以回忆起来有点吃力,还好面试官没有刁难,发挥还可以。问了Java的内存机制,会不会导致内存泄漏,这个答的不太好;问了下hibernate的机制和作用都回答上了,让写了下爬虫程序的核心代码和正则表达式。
一面整整面了30分钟感觉有戏,就回去好好准备2面的内容,把当年工程代码翻出来复习以免再出现忘记的尴尬。很快第二天就通知去进行技术二面。技术二面就是传说中的压力面,被好一顿虐待。项目中的问题一个没问,问的全是操作系统、数据结构的问题。还好专业都是A+,大多数题都回答上了。问了下我树转二叉树,这个小意思。还问了Java内存机制和是否会有内存泄漏什么情况下会泄漏,good这个在一面回去之后就看了,回答的完美。最后一题是问的查找QQ号。小case,写了个二分查找;他说你认为我会满意吗,我想了想又写了一个哈希查找,他说还是不满意。这个时候我已经有点小不爽了,就说不知道。在有点尴尬的气氛中结束了面试。当时觉得没戏了,有点失落。回家看了下算法导论,原来有一个极为高效的算法是二叉查找,腾讯面试,唉,人家已经提示了,但是还没想到,有点小遗憾。
过了一周收到腾讯的hr面试邀请的时候,说实话非常的意外。听说我们学校本科生全军覆没,就我一个过了2面,研究生只有3个过了2面。hr面没问什么特别的,此处不表。一周后收到腾讯的正式offer,还是有点小激动的。薪水方面超过了我的预期,但最主要的是一面的面试官看起来很厉害的样子,感觉腾讯也是一家很厉害的公司。
在腾讯干了四年,正式三年,实习一年。后来开始负责招聘,我们部门在选择求职者的时候主要看聪明程度、视野、大局观、气场等软实力。当时我负责面了一个孩子,各方面挺不错的,组长觉得也还行,但是被总监毙掉了,原因是太软不够霸气。还有一个哥们技术和基础感觉都还行,但是被组长毙掉了,原因是视野和聪明度不够。
所以准备面试腾讯的同学,建议多留意近期的互联网的最新动态,多练练表达。如果能在面试中批判一下近期腾讯的决策失误和产品缺陷,无论对错都会认为这个孩子不错,那么一定会加分的;但是也不能过了,完全说的不对还侃侃而谈会让人觉得你这个人很浮夸也是会被毙掉的。尺度的拿捏很重要。还有一点,语速快而且语气坚决目光坚毅自信的比语速慢表达不流畅的同学成功几率高。我面过一个哥们,后来他顶替了我领域负责人的位置,这是后话。他在面试的时候就非常的自信,如果问一些“弱智”问题会被他反讽,当时大家就觉得这个人很厉害,面试也很顺利,1天连续面了5面,当天就发了offer。腾讯面试,腾讯社招是电话面、技术一面、组长面、平台总监面、部门经理面、hr面。总共6面,面谈是5面。
面试的时候首先要自信,如果能做到不卑不亢其实就已经成功了一半。我感觉大多数程序员都不太自信,给人感觉有点文弱,如果你自己都对自己不自信,怎么能奢求公司对你自信呢。但是也不能太自信,自信心爆棚就是自大,面过一个2年开发经验的问他技术都不知道,就谈项目。腾讯面试,问他项目中做了什么就谈项目是什么。在我这就被毙掉了还问你们能不能开到30w,我只能让他回家等消息了。
腾讯面试题整理——并附有网友的解答,感兴趣的同学参考下
一不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)
1已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)
A.CFHGEBDAB.CDFEGHBAC.FGHCDEBAD.CFHGEDBA
根据先序遍历和中序遍历能唯一确定二叉树:
注意:要想唯一确定一颗二叉树,必须已知两种遍历,并且其中必须有中序,因为先序和后序不能确定左右子树,如下图所示:
从上图中我们可以看出,没有中序是不能确定一颗树的!
2下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)
A.有序数组B.有序链表C.AVL树D.Hash表
数组的删除性能比较差,而链表的查找性能比较差!
3下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)
A.快速排序B.堆排序C.归并排序D.冒泡排序
快排和冒泡排序在最坏情况下的时间复杂度是O(n^2);
4初始序列为18625473一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)
A.83251647
B.32851467
C.38251674
D.82351476
建立小根堆的过程如下图所示:
5当n=5时,下列函数的返回值是:(A)
intfoo(intn){
if(n2){
returnn;
}
else
returnfoo(n-1)+foo(n-2);
}
A.5B.7C.8D.10
6S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)
A.37.5%B.32.5%C.28.6%D.26.1%
3*0.01%/(3*0.01%+5*0.015%)=28.6%
7Unix系统中,哪些可以用于进程间的通信?(ABCD)
进程间通信主要包括管道,系统IPC(包括消息队列,信号量,共享存储),SOCKET.
A.SocketB.共享内存C.消息队列D.信号量
8静态变量通常存储在进程哪个区?(C)
A.栈区B.堆区C.全局区D.代码区
栈区一般用于存储比较小的临时变量;
堆区一般用于存储比较大的临时变量;
代码区用于存储代码;
全局区用于存储全局变量,静态变量等。
9查询性能(B)
A.在Name字段上添加主键
B.在Name字段上添加索引
C.在Age字段上添加主键
D.在Age字段上添加索引
如果经常依据特定的字段搜索表或对表的记录进行排序,则可以通过创建该字段的索引来加快执行这些操作的
10IP地址131.153.12.71是一个(B)类IP地址。
A.AB.BC.CD.D
A类:0打头
B类:10打头
C类:110打头
D类:1110打头
11下推自动识别机的语言是:(C)
A.0型语言B.1型语言C.2型语言D.3型语言
参考:维基百科
12下列程序的输出是:(D)
#defineadd(a+b)a+b
intmain()
{
printf("%d\n",5*add(3+4));
return0;
}
5*3+4=19
A.23B.35C.16D.19
13浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)
A找不到该页面
B禁止访问
C内部服务器访问
D服务器繁忙
14如果某系统15*4=112成立,则系统采用的是(A)进制。
A.6B.7C.8D.9
逐个带入即可:
对于6进制而言:15的十进制就是11;112的十进制就是44,11*4=44。
15某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)
Aa(000)b(001)h(01)i(10)o(11)
Ba(0000)b(0001)h(001)o(01)i(1)
Ca(000)b(001)h(01)i(10)o(00)
Da(0000)b(0001)h(001)o(000)i(1)