30103.9103一万元可以做16个项目=

汽车高级诊断技师培训中心微信公众号随时更新如果你觉得资料不错,请转发一下到你的QQ空间与微信朋友圈让汽车维修一线技师共同关注一起共享知识,一起为美好嘚生活每天注入新的能量!
有人用微信......有人用微信学习成长!
95%技师在这里学习进步!不落伍就关注!


途锐轮胎气压灯基本设定

10匹配——通道5輸入左前胎压

10匹配——通道6输入右前胎压

10匹配——通道8输入右后胎压

10匹配——通道7输入左后胎压

01-10-0 0 删除节气门控制单元自学习值

17-11-11463 激活巡航功能 带定速巡航功能的大众车

空气悬挂系统 34-16-31564 空气悬挂自适应 途锐.辉腾. 固定登陆码

组合仪表 17-11-13861 更换里程表输入里程用 固定登陆码

10-2 保养周期显示复位 用于消除保养提示 输入0即可

10-3 燃油消耗显示校正 10-4 仪表信息系统语言选择

10-9 里程显示自适应 总里程数小于100公里的表 预输入的数字大于100

10-16 读出里程脈冲数

10-30 燃油表自适应 燃油表指针随动 示值120-136之间变化

10-40 输入保养周期内剩余里程

10-43 保养间隔里程输入 仪表编码后数第二位1车型

10-1 匹配所有的遥控钥匙

10-3 自动锁上/打开 车速达每小时15公里自动上锁

10-4 自动锁上/打开 点火钥匙拔出,车门自动开锁

10-5 解除内部监控

10-6 开锁喇叭响 开锁确认信号

10-7 锁车喇叭響 锁车确认信号

10-8 锁车转向信号闪 转向信号闪2次确认锁已开

10-9 开锁转向信号闪 转向信号闪1次,确认锁车

10-10 设置警报喇叭警报方式 带遥控警报器嘚大众车 2=德国;3=英国;1=其他国家

10-4 关闭左侧气囊

自动空调 08- 4 -0 空调器翻版电机 带自动空调的车型 )

途安、途锐、辉腾 Can-Bus 的区别:

05启动授权模块 06,乘愙坐椅 07大灯控制!

08,自动空调; 09中央电器系统 0D,左侧滑门

11发动机 I2电子离合器 13 距离控制

14,电控悬架 15安全气囊 16,方向盘电器.

1C位置监测 21,發动机III 22四轮驱动

23,刹车调压 24驱动防滑 25,电子防盗

26电动天窗 27,后灯光控制 28后空调

29,左侧灯光 31发动机其他 32,差速锁止机构

34车身调岼 35,中央门锁* 36司机座椅控制

37,巡航控制 38天窗控制 39,右侧灯光

41柴油泵 42,司机侧门 43刹车辅助

44,转向辅助 45内部监控 46,舒适系统

47音响系统 48,左后座椅控制 49自动大灯

51,电子驱动 52乘客侧车门 53,驻车制动!

54后扰流板 55,氙灯射程 56收音机

57,电视 58辅助燃油箱 59,牵引保护

61电瓶控制 62左后车门 63,司机辅助系统

64稳定系统 65,轮胎气压 66右后座椅控制

67,语音控制 68雨刮器 69,拖车控制

71电瓶充电 72,右后车门 73乘客辅助系统

75,紧急呼叫 76停车辅助 77,车载电话

78滑门 7D,辅助加热


转向角转感器校零03-11--01-左右打方向大于15度--确定

奥迪疝气灯设定:(在系统无其他故障時仅含大灯未设定时才能进行)

55 --04 --001,然后手动调整大灯到正常位置

如果是用5053CANBUS检测线,去做A6L的大灯设定则只需要进入55(疝灯射程),再進入04(基本设定)点击有上角的下一步就行!(多点几次,点三下左右,灯就会自己灭)

A6仪表更换后的匹配;

A6发动机常用数据块:

15 --08 --01(安全氣囊电脑中的底盘号)

17 --08 --01(仪表控制单元中的底盘号)

舒适系统 46 遥控功能设置:

07 开锁 --转向信号闪烁

08 锁止 --转向信号闪烁

油门踏板位置强制减挡功能与发动机控制单元匹配 :

节气门控制单元与发动机控制单元匹配:

检查节气门和油门踏板位置传感器:

2区 节气门角度传感器-2 97~3% 踩油门时数值下降

3区 油门踏板位置传感器-1 12~97% 踩油门时数值上升

4区 油门踏板位置传感器-2 4~49% 踩油门时数值上升

注:显示区3的数值应始终约等于显示区4的两倍

更换旧嘚发动机控制单元 01-11(旧密码)-10-50(新密码)06

更换仪表 17-10-50(0+密码)06 (匹配所有钥匙)

检查车速信号 01-08-005(3区)转动左前轮看是否显示车速

注:车速传感器G22變速器上产生仪表里预处理

遥控器(钥匙)匹配: 46-10-00-10-01(选择遥控器数)06 按下每个遥控器1次.

更换控制器J104或转角传感器G85后,对ESP的基本设置:

温度茬+5---95度范围内进气温度大于5度ECU供电电压大于11。5V巡舰正常。发动机无故障关闭用电设备

9主题:帕萨特2.8/V6 更换控制器J104或转角传感器G85后对ESP的设萣步骤

车型:帕萨特2.8/V6车型

在更换控制器J104或转角传感器G85后,必须进行控制器编码和对转角传感器进行补偿的操作否则,ESP系统无法正常工作


1) 连接故障阅读仪V.A.G1552,接通点火开关并输入地址词03。

2) 进入08阅读数据块选择005显示组观察第一显示区(注:在进行设定前车辆方向盘必须处茬直线行驶位置,转向角的额定值应为±5℃)

3) 按C键退出,输入11选择登入输入登入码09597。

4) 选择功能07对控制器进行编码输入编码04297。

5) 繼续对转角传感器G85进行0位补偿输入11选择登入,输入登入码40168

6) 选择功能04进行基础设定,选择显示组001若V.A.G1552

显示屏出现OK字样,表示设定步骤巳完成若不出现OK字样,表示设定步骤没有成功须再次检查005显示组第一显示区中转向角的额定值并重新设定。

10主题:关于前排驾驶员座椅及外后视镜的记忆功能设置与调用

车型:帕萨特V6车型(带座椅记忆功能)

a) 记忆正常驾驶时的驾驶员座椅和外后视镜位置

2)将驾驶员座椅咗侧的“Memory Off'红色按钮压下;

3)调节驾驶员座椅及外后视镜到最适合的位置压下驾驶员座椅左侧一个记忆按钮(建议从第一个按钮开始)并保持,直到听见”咚“的提示音表明设置完毕(重复此步骤可以设置另外两个记忆按钮);

4)驾驶员座椅上的记忆按钮设定完成后,立即断开点火开关并拔出点火钥匙在5秒钟内按住钥匙上的开启按钮不放,直到听见“咚”的提示音钥匙的记忆设置完毕(重复3和4步骤可鉯将设定好的位置记忆在另外的钥匙中,备用钥匙无遥控功能则不能设定)

b) 设置和记忆预调好的倒车时外后视镜位置

1) 在驾驶员座椅上的記忆按钮设定完成后,将外后视镜调节旋钮切换到右外后视镜调节位置;

2)将换档杆放入倒档位置调整右外后视镜位置(使驾驶人员在倒车时能从车内看到车辆后侧及地面情况);

3)压下驾驶员座椅左侧上某一记忆按钮并保持,直到听见”咚“的提示音表明设置完毕设置的位置被相应记忆按钮记忆。

(注:在调用预调好的倒车时外后视镜位置时外后视镜调节旋钮应先切换到右外后视镜调节位置)。

B:調用预先设置好的记忆位置

1)在驾驶员车门未关闭的情况下按压一下驾驶员座椅上已设定好的记忆按钮,驾驶员座椅和外后视镜会自动運行到预先设置好的位置;

2)在驾驶员车门已关闭的情况下按住驾驶员座椅上已设定好的记忆按钮不放,直到驾驶员座椅和外后视镜自動调整到预先设置好的位置;

3)在驾驶员车门已关闭的情况下按下遥控钥匙的开启按钮,打开驾驶员侧车门驾驶员座椅会自动调节到此钥匙所记忆的位置(两把主钥匙可以记忆两个位置)。

(注:只有在点火开关断开,而且将“Memory Off'红色开关压下才可以调用预先设置好的记憶位置)。

14主题:关于PASSAT驾驶员座椅的记忆系统初始化的技术指导

为避免安装新的驾驶员侧座椅控制器后无法进行记忆设置对于更换PASSAT V6驾驶員侧座椅控制器后必须对座椅记忆系统重新进行初始化设定。

4、调整座椅靠背至最陡位置即使用水平电动调整开关和靠背电动调整开关調整驾驶员座椅,使座椅向前至最前端座椅靠背向方向盘方向调节到不能调节为止。

完成以上操作步骤后记忆系统完成初始化过程,偅新具备记忆功能设定


通道 001 电子节气门(节气门体自适应)

解释 节气门自适应,等待至显示“匹配自适应:调整正常”

通道 002 质量空气流量传感器检测

发动机运转G28(怠速)暖机

通道003 废弃再循环(EGR)

点火开关打开,发动机启动(怠速)踩下制动踏板和加速踏板并保持住,廢弃再循环(EGR)打开和关闭交替进行“EGR ON”和”EGR OFF“之间的偏差必须至少为100.0mg/str

通道008 真空泵测试(短程)

发动机关闭点火开关打开,换挡杆:P/N档牢牢踩下制动踏板

点火开关打开,发动机启动(怠速)踩下制动踏板和加速踏板并保持住,充气压气控制0N和OFF交替进行“激活”和“关閉”之间的差至少为80.0mbar

通道028 点火(爆震传感器测试----短途)

牢牢踩下制动踏板和风门踏板一次发动机转速自动增加到2200rpm

通道 034 氧传感器控制(老囮检测:气缸列1,传感器1)

牢牢踩下制动踏板和风门踏板一次发动机转速自动增加到2200rpm

通道 035 氧传感器控制(老化检测,气缸列2传感器1)

牢牢踩下制动踏板和风门踏板一次,发动机转速自动增加到2200rpm

通道 036 氧传感器控制(传感器准备就绪 --催化转换器后)

牢牢踩下制动踏板和风门踏板一次发动机转速自动增加到2200rpm

通道037 氧传感器控制(氧传感器变化量,缸组1)

牢牢踩下制动踏板和风门踏板一次发动机转速自动增加箌2200rpm

通道038 氧传感器控制(氧传感器变化量,缸组2)

牢牢踩下制动踏板和风门踏板一次发动机转速自动增加到2200rpm

通道 039 氧传感器控制(传感器交換)

牢牢踩下制动踏板和风门踏板一次,发动机转速自动增加到2200rpm

通道 043 氧传感器控制(老化检测:气缸列1传感器2)

牢牢踩下制动踏板和风門踏板一次,发动机转速自动增加到2200rpm

通道044 氧传感器控制(老化检测:气缸列2传感器2)

牢牢踩下制动踏板和风门踏板一次,发动机转速自動增加到2200rpm

通道 046 氧传感器控制(催化转换测试气缸列1)

通道 047 氧传感器控制(催化转换测试,气缸列2)

通道048 氧传感器控制(催化转换器热诊斷气缸列1)

牢牢踩下制动踏板和风门踏板1次

通道 060 电子节气门(节气门自适应)

节气门自适应,等待至显示“匹配自适应:调整正常”

通噵 063 电子节气门(强制降档开关自适应)

通道 070 排放降低(EVAP阀测试)

通道 071 排放减少(泄露诊断系统)

通道 075 排放减少(废弃再循环)

通道 077 排放减尐(二次空气喷射气缸列1)

通道 078 排放减少(二次空气喷射,气缸列2)

短途行驶034/035必须OK牢牢踩下制动踏板和加速踏板一次,发动机转速自動增加到1400rpm注意:每次发动机启动时只能执行一次

通道 094 进气凸轮轴调节

短途行驶034/035必须OK,牢牢踩下制动踏板和加速踏板一次发动机转速自動增加到1400rpm,注意:每次发动机启动时只能执行一次

通道 096 凸轮轴调整(排气)

牢牢踩下制动踏板和加速踏板一次发动机转速自动增加到2200rpm

通噵 098 电子节气门(节气门体自适应)

节气门自适应,等待至显示“匹配自适应:调整正常”

通道 099 氧传感器控制切断

通道 103 燃油喷射(油泵自适應)

通道 107 燃油喷射(燃油供给系统)

通道 130 发动机冷却(电子冷却系统)

通道 140 燃油供给系统(燃油压力降低)

通道 142 燃油供给系统(进气通路風门自适应气缸列1)

通道 145 废弃温度传感器测试

通道 146 NOX存储器催化器,气缸列1

通道 148 脱硫NOX存储器催化剂气缸列1

通道 190 氧传感器控制(老化检测:气缸列1,传感器3)

牢牢踩下制动踏板和加速踏板1次发动机转速自动增加

通道191 泄露诊断,二次空气喷射

通道 200 准备编码(自动“车辆下线”检测)

牢牢踩下制动踏板和加速踏板1次发动机转速自动增加

通道 238 燃油喷射(油泵自适应)

通道 243 燃油泵对齐

通道 001 重设自学习值

为复位自適应值保存该自适应通道

通道 001 怠速调节

更换自适应值保存在该通道内

更换自适应值保存在该通道内

通道 003 发电机负荷标定

更换自适应值保存茬该通道内

通道004 伺服泵负荷标定

更换自适应值保存在该通道内

通道005 废弃再循环(EGR)

更换自适应值保存在该通道内

更换自适应值保存在该通噵内

通道007 最大速度限制

最大限速器值是一个单向向下调整的值,一旦降低它就不能再升高,就必须使用新值除非很确定,否则请勿改變

通道 008 冷却液温度标定

与冷却温度相关的预热时间调整

通道 009 空调压缩机扭矩标定

更换自适应值保存在该通道内

通道 012 烟尘质量标定

一旦柴油胃里滤清器被更换就必须进行灰尘质量标定以使ECU知道。设置该自适应通为0更换ECU时,灰尘质量必须从旧的原始的ECU中传输而来。在不能這样做的情况下你必须按照这样的方法自己计算这个值(取车载计算机中的平均油耗或假设一个值为

通道 050 防盗器(车辆数据自适应)

请輸入仪表板(就PIN/SKC)的防盗器PIN/SKC 。自适应程序初始化后发动机控制模块采用车辆识别号(VIN)和车辆防盗器识别(IMM0 --ID)(来自旧仪表板),一旦自适应完荿关闭点火开关约2分钟。

通道 091 防盗器状态

0=防盗器不匹配 1=防盗器匹配关闭 4=防盗器匹配(系统OK)

通道 000 强迫降档自适应

踩下加速踏板直至强制降档并保持3秒

通道 056 挂车稳定性

0=挂车稳定系统关闭 1=挂车稳定系统激活

通道 058 下坡防滑辅助系统(HHA)

0=下坡防滑辅助系统正常1=下坡防滑辅助系统“早”(低转速起动) 2=下坡防滑辅助系统“迟”(高转速起动离合器打滑)

通道 001 制动泵排气

“激活”基础设置,状态和说明

通道 001 转向角传感器(G85)对齐

用“40168”注册/编码-II然后“激活”基础设置,

通道 003 系统功能测试激活

通道 040 纵向加速传感器关闭(G251)

通道 042 胎压监测系统(TPMS)复位

通道 060 转向角传感器调整(G85)

用“40168”注册/编码-II然后“激活”基础设置

通道 061转速,侧向纵向加速传感器调整(G200/G202/G251)

用“40168”注册/编码-II,然后“噭活”基础设置

通道 063 侧向加速传感器调整(G200)

用“40168”注册/编码-II然后“激活”基础设置

通道 066 制动压力传感器调整(G201)

用“40168”注册/编码-II,然後“激活”基础设置

通道 068 转速传感器调整(G202)

用“40168”注册/编码-II然后“激活”基础设置

通道 069 纵向加速传感器(G251)

用“40168”注册/编码-II,然后“噭活”基础设置

通道 093 ESP(电子稳定系统) 驾驶测试初始化

通道000 风门马达位置自适应

通道 001 风门马达基础设置

通道 001 气流风门控制马达(V71)

0=带独立涳气流量风门控制马达的车辆 1=不带独立空气流量风门控制马达的车辆

通道 002 再循环气风门控制马达(V113)

0=带独立空气再循环气风门控制马达的車辆1=不带独立空气再循环气风门控制马达的车辆

通道 004 空调调节阀(N280)电流限制

基础值“0”表示根据控制模块编码进行的限制例如2.0=200mA,注意:洎适应通道不能被更改

通道006 辅助加热/通风辅助

设置影响到控制模块在“点火关闭”时如何决定是否需要辅助加热/通风,0=自动1=上次MMI预设

通噵 007 辅助加热/通风切断

0=基于操作时间关闭或手动输入 1=基于发动机关闭而切断

通道 009 自适应通道复位(基于编码)

将所有自适应通道复位到通过編码输入“1”作为新值的设置值

通道 011 太阳能顶棚

0=太阳能天窗MMI设置可用 1=天阳能天窗MMI设置不可用

通道 015 辅助加热/通风时间的新鲜空气鼓风机(V2)轉速

通道 021 通过辅助加热进行发动机加热

0=MMI设置“包括发动机”不可用 1= MMI设置“包括发动机”可用

通道 022 新鲜空气鼓风机(V2)加热

0=自动(基于当前編码) 1=其他国家-低(减速通过全特性曲线)

2=其他国家-高(加速通过全特性曲线) 3=美国(在某些区域速度稍高)

通道 023 温度特性

0=自动(基于当湔编码) 1=其他国家(热带特性) 2=美国(寒带特性)

通道 081 自适应值(车辆数据)

为启动车辆数据(VIN)自适应程序,将26467作为新值输入1保存

通道 017 洎适应巡航控制(ACC)

13861=自适应激活 0=ACC关闭 1=ACC激活注意:请先进行安全读取

通道 019 无线电控制时钟

同步被初始化后可以尝试持续多久/增量 1=1分钟/ 范围:0(0FF) 和1 --50分钟

通道 025 安全带警告

01— 收音机 02 --telematics(车载信息与通讯系统)(北美)不带多功能方向盘

通道 099 运输模式

通道 000 遥控器删除

00256=自动锁止/解锁 00512=舒适模式咑开:前部车窗调节器

01024=舒适模式打开:后部车窗调节器 02048=舒适模式打开:天窗

通道 001 遥控自适应

输入已自适应的钥匙编号保存。现在按下每個遥控钥匙上的按钮1或2使其自适应至少1秒钟

注意:所有钥匙必须在一个程序中进行自适应所有钥匙的自适应不能超过15秒

00256=自动锁止/解锁 00512=舒適模式打开:前部车窗调节器

01024=舒适模式打开:后部车窗调节器 02048=舒适模式打开:天窗

通道 002 自动锁止设定

车辆速度达到15km/h 或10mph的车门将自动锁止。范围 0=关闭/1=打开

通道 003 自动解锁设定

当钥匙从点火开关上拔出时车门将自动解锁。范围:0=关闭/1=打开

通道 003 个性化钥匙3

00256=自动锁止/解锁 00512=舒适模式打開:前部车窗调节器

01024=舒适模式打开:后部车窗调节器 02048=舒适模式打开:天窗

通道 004 自动锁止

车辆速度达到15km/h 或10mph的车门将自动锁止范围 0=关闭/1=打开

通道 004 自动解锁

车辆速度达到15km/h 或10mph的车门将自动锁止。范围 0=关闭/1=打开

00256=自动锁止/解锁 00512=舒适模式打开:前部车窗调节器

01024=舒适模式打开:后部车窗调節器 02048=舒适模式打开:天窗

通道 004 通过无钥匙进入系统解锁提示设定

当通过无钥匙进入系统解锁时提示(车门把手接触传感器)

范围:0=无 1=闪爍 2=哗哗声 3=闪烁和哗哗声

通道 006 解锁喇叭

通过遥控解锁时喇叭发出哗哗声/范围0=关闭/1=打开

通道 007 锁止喇叭

通过遥控锁止时喇叭发出哗哗声 0=关闭/1=打开

通道 007 通过无钥匙进入系统锁止确认设定

当通过无钥匙进入系统解锁时,提示(车门把手接触传感器)

范围:0=无 1=闪烁 2=哗哗声 3=闪烁和哗哗声

通噵 060 个人信息

从多媒体界面中(MMI)的车辆-菜单中(中控锁/车窗)激活设置/更改

通道 061 舒适功能

00001=舒适模式关闭:遥控车窗调节器

00002=舒适模式打开:遙控车窗调节器

00004=舒适模式关闭:遥控顶棚

00008=舒适模式打开:遥控顶棚

00016=舒适模式关闭:通过车窗调节器开关控制车窗

00032=舒适模式打开:通过车窗調节器开关控制车窗

00064=舒适模式关闭:通过车窗调节器开关控制的顶棚

00128=舒适模式打开:通过车窗调节器开关控制的顶棚

00256=舒适模式关闭:通过車门锁控制的车窗调节器

00512=舒适模式关闭:通过车门锁控制的顶棚

1模块36,驾驶员侧座椅

3通道位置写60,回车

4下面第二个区域里面填 1

每次熄火,开车门座位自动后移 ffice:

中央电气系统然后点匹配里面就有了把数字3 改成5

时间:46-匹配10-频道号

时间:46-匹配-频道号

前提:大灯开关处于近咣位,且启用光线传感器

17-匹配10-通道50填写下次保养公里数(单位为100公里)

通道51为保养日期(单位为天)

17-匹配10-通道09填写公里数(单位为10KM)

46中央便利系统-重新编码bit6舒适功能自动关闭(一键升窗在隔壁找到解决方法了0E改成4E就行,第13和14)

提车时4S帮忙开通了下雨关窗功能结果打开“09-中央电控系统--重新编码07--RLS”发现编码竟然是,换成16进制为730AD大灯30==48%还好说,雨量AD==173%也太恐怖了点吧。不过,后来还是自己改了

功能介绍 : 按下遥控钥匙的开锁键一下,仅开启驾驶员侧门,连续按二下开锁键, 所有门均开启./开启方法: 46-中央便利系统-匹配-10-频道号03-1(未开)

拔钥匙自动解锁将钥匙拔出点火开关后, 车门自动解锁

选择控制模块-中央电控系统-重新编码-长编码帮助按TAB键切换到BYTE4,在BIT4前打勾,然后点Transfer再点确萣。(已开)

驾驶侧门开启钥匙未拔报警

当钥匙还未拔下的情况下就把驾驶员侧的门打开了,车子会发出铛铛铛的告警音

开启方法:17-组匼仪表-重新编码-07-软件编码-从原来的0002101改成0002301(已开)组合仪表”里面的“重新编码-07”,然后把软件编码从原来的0002101改成0002301就可以开通开门提醒功能了。该功能就是当你钥匙还未拔下的情况下就把驾驶员侧的门打开了,车子会发出当当当的告警音

查到的关于这个byte2的设定,具体没驗证

2 钥匙提醒+灯光提醒+英制显示 12小时制 11L/100KM

3 钥匙提醒+灯光提醒+公制显示 12小时制 11L/100KM

6 速度提醒+钥匙提醒+灯光提醒+公制显示 24小时制 11L/100KM

进叺5053仪表单元,装原来的代码0019103改成0017103好了 OK!当你按下执行后仪表上的安全带警报灯熄灭了。世界从此安静了这个灯永远不会亮了,那个一分鍾之久的声音也不会响起了

1、在主界面下点选择模块

2、在选择控制模块下点选09单元“中央电气系统”

3、在新打开的界面下,选择右侧的長编码

4、此时就到了要修改的界面了把倒数第二位的20改为2C

6、然后退回,遇到需确认或执行或保存都选需要。

最后大灯开关打到AUTO位置,打转向灯或方向盘转动约90度后一侧雾灯点亮。OK

2、选择07进行编码;

3、在组件下拉框中选择RLS(Rain & Light Sensor的缩写)如果没有下拉框或者没有RLS可以选择,囿可能你的车子没有雨光感器;

4、如果没开应该是33025(我的车子是)转换成16进制73025。因为我的车子已经打开了下雨关窗功能

先来解释一下“一键升窗”,原车在锁车后要一直按住摇控器锁键不能松手没关的玻璃才会升到顶,按到中途松开遥控器玻璃窗就会停下来.现在更改编碼后只要按一下键摇控的关门键玻璃窗就可以直接关上了。

注:可一键关闭所有的车窗包括天窗。

准备一条数据线连上电脑,用5053软件進入到46点击07单元,只要将

改成 19D8 02(48) 7F2D E0 11A0拔掉钥匙,打开车窗然后锁车,按住锁车键不放直到玻璃启动,放开锁车键车窗玻璃仍然上升。完成

第三列即为节气门开启角度,注意发动机要预热过(水温90度)否则值偏高

值超过5(正常应在1-5之间)就该洗了

1)在组号中输入060,按GO!


2)直到数据显示OK

}

1、签订合同应遵守《中华人民共囷国政府采购法》、《中华人民共和国合同法》

2、签订合同时,采购人与中标人应结合招标文件第五章规定填列相应内容招标文件第伍章已有规定的,双方均不得对规定进行变更或调整;招标文件第五章未作规定的双方可通过友好协商进行约定。

甲方:云霄县人民政府办公室

乙方:福建卓诚保安服务有限公司

根据招标编号为[350622]ECY[GK]*******-1的云霄县人民政府办公室办公大楼安保服务项目服务类采购项目项目(以下简稱:“本项目”)的招标结果乙方为中标人。现经甲乙双方友好协商就以下事项达成一致并签订本合同:

1、下列合同文件是构成本合哃不可分割的部分:


中国农业银行漳州市芗江支行

签订地点:云霄县人民政府办公室


}

     之前看了很多面试题感觉要不昰不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排现在分享给大家。(题目来源于网络侵删)


注:Key-Value Coding查找方法的时候,不仅仅会查找someKey这个方法还会查找getsomeKey这个方法,前面加一个get或者_someKey以及_getsomeKey这几种形式。同时查找实例变量的时候也会不仅仅查找someKey这个变量,也会查找_someKey这个变量是否存在)

设计valueForUndefinedKey:方法的主要目的是当你使用-(id)valueForKey方法从对象中请求值时,对象能够在错误发生前有最后的机会响应这个請求。这样做有很多好处下面的两个例子说明了这样做的好处。“

来至cocoa这个说法应该挺有道理。

因为我们知道button却是存在一个highlighted实例变量.洇此为何上面我们只是add一个相关的keypath就行了

可以按照kvc查找的逻辑理解,就说的过去了


答:代理的目的是改变或传递控制链。允许一个类茬某些特定时刻通知到其他类而不需要获取到那些类的指针。可以减少框架复杂度

另外一点,代理可以理解为java中的回调监听机制的一種类似


21. oc中可修改和不可以修改类型。

答:可修改不可修改的集合类这个我个人简单理解就是可动态添加修改和不可动态添加修改一样。

比如NSArray和NSMutableArray前者在初始化后的内存控件就是固定不可变的,后者可以添加等可以动态申请新的内存空间。


22. 我们说的oc是动态运行时语言是什么意思?

答:多态 主要是将数据类型的确定由编译时,推迟到了运行时

这个问题其实浅涉及到两个概念,运行时和多态

简单来说,運行时机制使我们直到运行时才去决定一个对象的类别以及调用该类别对象指定方法。

多态:不同对象以自己的方式响应相同的消息的能力叫做多态意思就是假设生物类(life)都用有一个相同的方法-eat;

那人类属于生物,猪也属于生物都继承了life后,实现各自的eat但是调用是我们呮需调用各自的eat方法。

也就是不同的对象以自己的方式响应了相同的消息(响应了eat这个选择器)

因此也可以说,运行时机制是多态的基础?~~~


23. 通知和协议的不同之处?

答:协议有控制链(has-a)的关系通知没有。

首先我一开始也不太明白什么叫控制链(专业术语了~)。但是简单分析下通知和玳理的行为模式我们大致可以有自己的理解

简单来说,通知的话它可以一对多,一条消息可以发送给多个消息接受者

代理按我们的悝解,到不是直接说不能一对多比如我们知道的明星经济代理人,很多时候一个经济人负责好几个明星的事务

只是对于不同明星间,玳理的事物对象都是不一样的一一对应,不可能说明天要处理A明星要一个发布会代理人发出处理发布会的消息后,别称B的

发布会了泹是通知就不一样,他只关心发出通知而不关心多少接收到感兴趣要处理。

因此控制链(has-a从英语单词大致可以看出单一拥有和可控制的對应关系。


24. 什么是推送消息?

答:推送通知更是一种技术

简单点就是客户端获取资源的一种手段。

普通情况下都是客户端主动的pull。

推送則是服务器端主动push 测试push的实现可以查看该博文。


答:多态子类指针可以赋值给父类。

这个题目其实可以出到一切面向对象语言中

因此关于多态,继承和封装基本最好都有个自我意识的理解也并非一定要把书上资料上写的能背出来


26. 对于单例的理解

答:在objective-c中要实现一个單例类,至少需要做以下四个步骤:

1).为单例对象实现一个静态实例并初始化,然后设置成nil

2).实现一个实例构造方法检查上面声明的静态實例是否为nil,如果是则新建并返回一个本类的实例

3).重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例


答: 事件响应链。包括点击事件画面刷新事件等。在视图栈内从上至下或者从下之上传播。

可以说点事件的分发传递以及处理。具体可以去看下touch事件这块因为问的太抽象化了

严重怀疑题目出到越后面就越笼统。

可以从责任链模式来讲通过事件响应链处理,其拥囿的扩展性


答:frame指的是:该view在父view坐标系统中的位置和大小(参照点是父亲的坐标系统)

bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是夲身坐标系统)


29. 方法和选择器有何不同?

答:selector是一个方法的名字method是一个组合体,包含了名字和实现.

详情可以看apple文档


一般我们了解的objective-c对于内存管理都是手动操作的,但是也有自动释放池

但是差了大部分资料,貌似不要和arc机制搞混就好了


操作和操作队列,基本可以看成java中的線程和线程池的概念用于处理ios多线程开发的问题。

网上部分资料提到一点是虽然是queue,但是却并不是带有队列的概念放入的操作并非昰按照严格的先进现出。

这边又有个疑点是对于队列来说,先进先出的概念是Afunc添加进队列Bfunc紧跟着也进入队列,Afunc先执行这个是必然的

泹是Bfunc是等Afunc完全操作完以后,B才开始启动并且执行因此队列的概念离乱上有点违背了多线程处理这个概念。

但是转念一想其实可以参考银荇的取票和叫号系统

因此对于A比B先排队取票但是B率先执行完操作,我们亦然可以感性认为这还是一个队列

但是后来看到一票关于这操莋队列话题的文章,其中有一句提到

“因为两个操作提交的时间间隔很近线程池中的线程,谁先启动是不定的”

瞬间觉得这个queue名字有點忽悠人了,还不如pool~

综合一点我们知道他可以比较大的用处在于可以帮组多线程编程就好了。


32. 什么是延迟加载?

答:懒汉模式只在用到嘚时候才去初始化。

也可以理解成延时加载

我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。

一个延时载避免内存过高,一個异步加载避免线程堵塞。


33. 是否在一个视图控制器中嵌入两个tableview控制器?

答:一个视图控制只提供了一个View视图理论上一个tableViewController也不能放吧,

只能说可以嵌入一个tableview视图当然,题目本身也有歧义如果不是我们定性思维认为的UIViewController,而是宏观的表示视图控制者那我们倒是可以把其看荿一个视图控制者,它可以控制多个视图控制器比如TabbarController那样的感觉。


34. 一个tableView是否可以关联两个不同的数据源?你会怎么处理?

答:首先我们从代碼来看数据源如何关联上的,其实是在数据源关联的代理方法里实现的

因此我们并不关心如何去关联他,他怎么关联上方法只是让峩返回根据自己的需要去设置如相关的数据源。

因此我觉得可以设置多个数据源啊,但是有个问题是你这是想干嘛呢?想让列表如何显礻,不同的数据源分区块显示?


答:当数组在程序运行时需要不断变化的,使用NSMutableArray当数组在初始化后,便不再改变的使用NSArray。需要指出的昰使用NSArray只表明的是该数组在运行时不发生改变,即不能往NSAarry的数组里新增和删除元素但不表明其数组內的元素的内容不能发生改变。NSArray是線程安全的NSMutableArray不是线程安全的,多线程使用到NSMutableArray需要注意



37. 在应用中可以创建多少autorelease对象,是否有限制?


38. 如果我们不创建内存池是否有内存池提供给我们?

答:界面线程维护着自己的内存池,用户自己创建的数据线程则需要创建该线程的内存池


39. 什么时候需要在程序中创建内存池?

答:用户自己创建的数据线程,则需要创建该线程的内存池



41. 什么是简便构造方法?

Foundation下大部分类均有简便构造方法我们可以通过简便构造方法,获得系统给我们创建好的对象并且不需要手动释放。


答:使用MVC模式设计应用其中Model层完成脱离界面,即在Model层其是可运行在任何设备仩,在controller层根据iPhone与iPad(独有UISplitViewController)的不同特点选择不同的viewController对象。在View层可根据现实要求,来设计其中以xib文件设计时,其设置其为universal



答:有以下几种保存机制:

1).通过web服务,保存在服务器上

2).通过NSCoder固化机制将对象保存在文件中


答:coredata是苹果提供一套数据保存框架,其基于SQlite




答:谓词是通过NSPredicate昰通过给定的逻辑条件作为约束条件,完成对数据的筛选


49. 和coredata一起有哪几种持久化存储机制?


答:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令)


51. 写出上面代码的Block的定义。



53. 做过的项目是否涉及网络访问功能使用什么对象完成网络功能?



多线程是个复杂的概念,按字面意思是同步完成多项任务提高了资源的使用效率,从硬件、操作系统、应鼡软件不同的角度去看多线程被赋予不同的内涵,对于硬件现在市面上多数的CPU都是多核的,多核的CPU运算多线程更为出色;从操作系统角喥是多任务,现在用的主流操作系统都是多任务的可以一边听歌、一边写博客;对于应用来说,多线程可以让应用有更快的回应可以茬网络下载时,同时响应用户的触摸操作在iOS应用中,对多线程最初的理解就是并发,它的含义是原来先做烧水再摘菜,再炒菜的工莋会变成烧水的同时去摘菜,最后去炒菜


答: iOS中的多线程,是Cocoa框架下的多线程通过Cocoa的封装,可以让我们更为方便的使用线程做过C++的哃学可能会对线程有更多的理解,比如线程的创立信号量、共享变量有认识,Cocoa框架下会方便很多它对线程做了封装,有些封装可以讓我们创建的对象,本身便拥有线程也就是线程的对象化抽象,从而减少我们的工程提供程序的健壮性。

GCD是(Grand Central Dispatch)的缩写 从系统级别提供嘚一个易用地多线程类库,具有运行时的特点能充分利用多核心硬件。GCD的API接口为C语言的函数函数参数中多数有Block,关于Block的使用参看这里为我们提供强大的“接口”,对于GCD的使用参见本文

NSOperation是一个抽象类它封装了线程的细节实现,我们可以通过子类化该对象加上NSQueue来同面姠对象的思维,管理多线程程序具体可参看这里:一个基于NSOperation的多线程网络访问的项目。

NSThread是一个控制线程执行的对象它不如NSOperation抽象,通过咜我们可以方便的得到一个线程并控制它。但NSThread的线程之间的并发控制是需要我们自己来控制的,可以通过NSCondition实现

在Cocoa的框架下,通知、Timer囷异步函数等都有使用多线程(待补充).


答: 项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它会使项目的程序结构更好,子类化NSOperation嘚设计思路是具有面向对象的优点(复用、封装),使得实现是多线程支持而接口简单,建议在复杂项目中使用

项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作会节省代码量,而Block参数的使用会是代码更为易读,建议在简单项目中使用


答: 对于闭包(block),囿很多定义,其中闭包就是能够读取其它函数内部变量的函数这个定义即接近本质又较好理解。对于刚接触Block的同学会觉得有些绕,因為我们习惯写这样的程序main(){ funA();} funA(){funB();} funB(){…..}; 就是函数main调用函数A函数A调用函数B… 函数们依次顺序执行,但现实中不全是这样的例如项目经理M,手下有3个程序员A、B、C当他给程序员A安排实现功能F1时,他并不等着A完成之后再去安排B去实现F2,而是安排给A功能F1B功能F2,C功能F3然后可能去写技术攵档,而当A遇到问题时他会来找项目经理M,当B做完时会通知M,这就是一个异步执行的例子在这种情形下,Block便可大显身手因为在项目经理M,给A安排工作时同时会告诉A若果遇到困难,如何能找到他报告问题(例如打他手机号)这就是项目经理M给A的一个回调接口,要回掉嘚操作比如接到电话,百度查询后返回网页内容给A,这就是一个Block在M交待工作时,已经定义好并且取得了F1的任务号(局部变量),却是茬当A遇到问题时才调用执行,跨函数在项目经理M查询百度获得结果后回调该block。


答: Objective-C是对C语言的扩展block的实现是基于指针和函数指针。

从計算语言的发展最早的goto,高级语言的指针到面向对象语言的block,从机器的思维一步步接近人的思维,以方便开发人员更为高效、直接嘚描述出现实的逻辑(需求)

声明一个blokc对象,注意对象属性设置为copy接到block 参数时,便会自动复制一份

__block是一种特殊类型,

使用该关键字声明嘚局部变量可以被block所改变,并且其在原函数中的值会被改变


答: 面试时,面试官会先问一些是否了解block,是否使用过block这些问题相当于開场白,往往是下面一系列问题的开始所以一定要如实根据自己的情况回答。

首先要了解什么是委托模式委托模式在iOS中大量应用,其茬设计模式中是适配器模式中的对象适配器Objective-C中使用id类型指向一切对象,使委托模式更为简洁了解委托模式的细节:

iOS设计模式—-委托模式

使用block实现委托模式,其优点是回调的block代码块定义在委托对象函数内部使代码更为紧凑;

适配对象不再需要实现具体某个protocol,代码更为简洁

功能:在指定的队列里提交一个异步执行的block,不阻塞当前线程

通过queue来控制block执行的线程主线程执行前文定义的 finishBlock对象


62.谈谈Object-C的内存管理方式忣过程?

答: 1).当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1.当你不再使用该对象时,你要负责向该对象发送一条release或autorelease消息.这样,该对象將在使用寿命结束时被销毁.

2).当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执荇任何操作来确保该对象被清理.如果你打算在一段时间内拥有该对象,则需要保留它并确保在操作完成时释放它.

3).如果你保留了某个对象,你需偠(最终)释放或自动释放该对象.必须保持retain方法和release方法的使用次数相等.


63.Object-C有私有方法吗私有变量呢?

答: objective-c – 类里面的方法只有两种, 静态方法和实唎方法. 这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西. 如果没有了私有方法的话, 对于一些小范围的代码重用就鈈那么顺手了. 在类里面声名一个私有方法

@private可以用来修饰私有变量

在Objective‐C中所有实例变量默认都是私有的,所有实例方法默认都是公有的


答: 哆继承在这里是用protocol 委托代理 来实现的

你不用去考虑繁琐的多继承 ,虚基类的概念.

ood的多态特性 在 obj-c 中通过委托来实现.


2).你retain或copy的你需要释放它。例洳:

对象2接收对象1的一个自动释放的值或传递一个基本数据类型(NSInteger,NSString)时:你或希望将对象2进行retain以防止它在被使用之前就被自动释放掉。泹是在retain后一定要在适当的时候进行释放。

Alloc/init建立的对象索引计数为1。无需将其再次retain

[NSArray array]和[NSDate date]等“方法”建立一个索引计数为1的对象,但是也昰一个自动释放对象所以是本地临时对象,那么无所谓了如果是打算在全Class中使用的变量(iVar),则必须retain它

缺省的类方法返回值都被执行了“自动释放”方法。(*如上中的NSArray)


答: 1).obj-c的编译器处理后缀为m的文件时可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码但cpp文件必须只能用c/c++代码,而苴cpp文件include的头文件中也不能出现obj-c的代码,因为cpp只是cpp

2).在mm文件中混用cpp直接使用即可所以obj-c混cpp不是问题

3).在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。

如果模块以类实现那么要按照cpp class的标准写类的定义,头文件中不能出现obj-c的东西包括#import cocoa的。实现文件中即类的实现代码中可以使鼡obj-c的东西,可以import,只是后缀是mm

如果模块以函数实现,那么头文件要按c的格式声明函数实现文件中,c++函数内部可以用obj-c但后缀还是mm或m。

总結:只要cpp文件和cpp include的文件中不包含obj-c的东西就可以用了cpp混用obj-c的关键是使用接口,而不能直接使用 实现代 码实际上cpp混用的是obj-c编译后的o文件,這个东西其实是无差别的所以可以用。obj-c的编译器支持cpp


答: 管理方式:对于栈来讲是由编译器自动管理,无需我们手工控制;对于堆来说释放工作由程序员控制,容易产生memory leak

栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域这句话的意思是栈顶的地址和棧的最大容量是系统预先规定好的,在 WINDOWS下栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数)如果申请的空间超过栈的剩余涳间时,将提示overflow因 此,能从栈获得的空间较小

堆:堆是向高地址扩展的数据结构,是不连续的内存区域这是由于系统是用链表来存儲的空闲内存地址的,自然是不连续的而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存由此可見,堆获得的空间比较灵活也比较大。

碎片问题:对于堆来讲频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片使程序效率降低。对于栈来讲则不会存在这个问题,因为栈是先进后出的队列他们是如此的一一对应,以至于永远都不可能有一个内存块从栈Φ间弹出

分配方式:堆都是动态分配的没有静态分配的堆。栈有2种分配方式:静态分配和动态分配静态分配是编译器完成的,比如局蔀变量的分配动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的他的动态分配是由编译器进行释放,无需我们手工实现

分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址压栈出栈都有专门的指令执行,这就决定了栈的效率比较高堆则是C/C++函数库提供的,它的机制是很复杂的




70.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略閏年问题)

我在这想看到几件事情:

#define 语法的基本知识(例如:不能以分号结束括号的使用,等等)

懂得预处理器将为你计算常数表达式嘚值因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值是更清晰而没有代价的。

意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数

如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一個好的起点记住,第一印象很重要


71.写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个

这个测试是为下面的目的而设的:

标识#define茬宏中应用的基本知识。这是很重要的因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方

对于嵌入式系统来说為了能达到要求的性能,嵌入代码经常是必须的方法

三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比 if-then-else 更優化的代码了解这个用法是很重要的。

懂得在宏中小心地把参数用括号括起来

我也用这个问题开始讨论宏的副作用例如:当你写下面嘚代码时会发生什么事?

这个表达式会产生副作用指针p会作三次++自增操作。


const 意味着"只读"下面的声明都是什么意思?

前两个的作用是一樣a是一个常整型数。

第三个意味着a是一个指向常整型数的指针(也就是整型数是不可修改的,但指针可以)

第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的但指针是不可修改的)。

最后一个意味着a是一个指向常整型数的常指针(吔就是说指针指向的整型数是不可修改的,同时指针也是不可修改的)

关键字const的作用是为给读你代码的人传达非常有用的信息,实际仩声明一个参数为常量是为了告诉了用户这个参数的应用目的。

如果你曾花很多时间清理其它人留下的垃圾你就会很快学会感谢这点哆余的信息。(当然懂得用const的程序员很少会留下的垃圾让别人来清理的)  通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑嘚代码合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改简而言之,这样可以减少bug的絀现

1).欲阻止一个变量被改变,可以使用 const 关键字在定义该 const 变量时,通常需要对它进行初

始化因为以后就没有机会再去改变它了;

2).对指針来说,可以指定指针本身为 const也可以指定指针所指的数据为 const,或二者同时指

3).在一个函数声明中const 可以修饰形参,表明它是一个输入参数在函数内部不能改变其值;

4).对于类的成员函数,若指定其为 const 类型则表明其是一个常函数,不能修改类的成员变量;

5).对于类的成员函数有时候必须指定其返回值为 const 类型,以使得其返回值不为“左值”


73. 关键字volatile有什么含意?并给出三个不同的例子。

答:一个定义为 volatile的变量是說这变量可能会被意想不到地改变这样,编译器就不会去假设这个变量的值了精确地说就是,优化器在用到这个变量时必须每次都小惢地重新读取这个变量的值而不是使用保存在寄存器里的备份。

下面是volatile变量的几个例子:

并行设备的硬件寄存器(如:状态寄存器)

多線程应用中被几个任务共享的变量


74. 一个参数既可以是const还可以是volatile吗 一个指针可以是volatile 吗?解释为什么

答:1).是的。一个例子是只读的状态寄存器它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它

2).是的。尽管这并不很常见一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。


1).函数体内 static 变量的作用范围为该函数体不同于 auto 变量,该变量的内存只被分配一次

因此其值在下次调用时仍维持上次的值;

2).在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

3).在模块内的 static 函数只可被这一模块内的其它函数调用这个函数的使用范围被限制在声明

4).在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

5).在类中的 static 成员函數属于整个类所拥有这个函数不接收 this 指针,因而只能访问类的static 成员变量


76. 线程与进程的区别和联系?

1). 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性

2). 进程和线程的主要差别在于它们是不同的操作系统资源管理方式

3). 进程有独立的地址空间,一个进程崩溃后在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径

4.)线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间一个线程死掉就等于整个进程死掉。所以多进程的程序要比多线程的程序健壮但在進程切换时,耗费资源较大效率要差一些。

5). 但对于一些要求同时进行并且又要共享某些变量的并发操作只能用线程,不能用进程


77. 列舉几种进程的同步机制,并比较其优缺点


78. 进程之间通信的途径

答:共享存储系统消息传递系统管道:以文件系统为基础


79. 进程死锁的原因

答:资源竞争及进程推进顺序非法


80. 死锁的4个必要条件

答:互斥、请求保持、不可剥夺、环路


答:鸵鸟策略、预防策略、避免策略、检测与解除死锁


答:iPhone OS 应用程序的基础 Cocoa Touch 框架重用了许多 Mac 系统的成熟模式,但是它更多地专注于触摸的接口和优化

UIKit 为您提供了在 iPhone OS 上实现图形,事件驅动程序的基本工具其建立在和 Mac OS X 中一样的 Foundation 框架上,包括文件处理网络,字符串操作等

Cocoa Touch 具有和 iPhone 用户接口一致的特殊设计。有了 UIKit您可鉯使用 iPhone OS 上的独特的图形接口控件,按钮以及全屏视图的功能,您还可以使用加速仪和多点触摸手势来控制您的应用

各色俱全的框架 除叻UIKit 外,Cocoa Touch 包含了创建世界一流 iPhone 应用程序需要的所有框架从三维图形,到专业音效甚至提供设备访问 API 以控制摄像头,或通过 GPS 获知当前位置

Cocoa Touch 既包含只需要几行代码就可以完成全部任务的强大的 Objective-C 框架,也在需要时提供基础的 C 语言 API 来直接访问系统这些框架包括:

Core Animation:通过 Core Animation,您就鈳以通过一个基于组合独立图层的简单的编程模型来创建丰富的用户体验

Core Audio:Core Audio 是播放,处理和录制音频的专业技术能够轻松为您的应用程序添加强大的音频功能。

Core Data:提供了一个面向对象的数据管理解决方案它易于使用和理解,甚至可处理任何应用或大或小的数据模型

丅面是 Cocoa Touch 中一小部分可用的框架:


83. 自动释放池是什么,如何工作

答:当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的洎动释放.它仍然是个正当的对象因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时自動释放池就会被释放,池中的所有对象也就被释放


6).不是一个过度复杂的 C 衍生语言

2).不支持运算符重载

4).使用动态运行时类型,所有的方法都昰函数调用所以很多编译时优化方法都用不到。(如内联函数等)性能低劣。


1). sprintf是格式化函数将一段数据通过特定的格式,格式化到┅个字符串缓冲区中去sprintf格式化的函数的长度不可控,有可能格式化后的字符串会超出缓冲区的大小造成溢出。

将src开始的一段字符串拷貝到dst开始的内存中去结束的标志符号为 ‘\0',由于拷贝的长度不是由我们自己控制的所以这个字符串拷贝很容易出错。


答:@property是一个属性訪问声明扩号内支持以下几个属性:

2).assign,setter方法直接赋值不进行任何retain操作,为了解决原类型与环循引用问题

4).copysetter方法进行Copy操作,与retain处理流程┅样先旧值release,再 Copy出新的对象retainCount为1。这是为了减少对上下文的依赖而引入的机制

5).nonatomic,非原子性访问不加同步,多线程并发访问会提高性能注意,如果不加此属性则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级


答: http是客户端用http协议进行请求,发送请求时候需要封装http请求头并绑定请求的数据,服务器一般有web服务器配合(当然也非绝对) http请求方式为客户端主动发起请求,服务器財能给响应一次请求完毕后则断开连接,以节省资源服务器不能主动给客户端响应(除非采取http长连接 技术)。iphone主要使用类是NSUrlConnection

scoket是客户端跟服务器直接使用socket“套接字”进行连接,并没有规定连接后断开所以客户端和服务器可以保持连接通道,双方 都可以主动发送数据┅般在游戏开发或股票开发这种要求即时性很强并且保持发送数据量比较大的场合使用。主要使用类是CFSocketRef


答: TCP全称是Transmission Control Protocol,中文名为传输控制協议它可以提供可靠的、面向连接的网络数据传递服务。传输控制协议主要包含下列任务和功能:

* 确保IP数据报的成功传递

* 对程序发送嘚大块数据进行分段和重组。

* 确保正确排序及按顺序传递分段的数据

* 通过计算校验和,进行传输数据的完整性检查

TCP提供的是面向连接嘚、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输

简单的说,TCP注重数据安全而UDP数据传输快点,但安全性一般


89. 你叻解svn,cvs等版本控制工具么

答: 版本控制 svn,cvs 是两种版控制的器,需要配套相关的svn,cvs服务器

scm是xcode里配置版本控制的地方。版本控制的原理就是a和b同時开发一个项目a写完当天的代码之后把代码提交给服务器,b要做的时候先从服务器得到最新版本就可以接着做。 如果a和b都要提交给服務器并且同时修改了同一个方法,就会产生代码冲突如果a先提交,那么b提交时服务器可以提示冲突的代码,b可以清晰的看到并做絀相应的修改或融合后再提交到服务器。


答: 客户端程序留下后门端口客户端总是监听针对这个后门的请求,于是 服务器可以主动像这個端口推送消息


答:此为.a文件,相当于java里的jar包把一些类编译到一个包中,在不同的工程中如果导入此文件就可以使用里面的类具体使用依然是#import “ xx.h”。


答: 音视频编解码框架内部使用UDP协议针对流媒体开发,内部开辟了六个端口来接受流媒体数据完成快速接受之目的。


答:数据库框架对sqllite的数据操作进行了封装,使用着可把精力都放在sql语句上面



94. 什么是沙盒模型?哪些操作是属于私有api范畴?

答:某个iphone工程进行文件操作有此工程对应的指定的位置不能逾越。




97. 简述内存分区情况

1).代码区:存放函数二进制代码

2).数据区:系统运行时申请内存并初始化系统退出时由系统释放。存放全局变量、静态变量、常量

3).堆区:通过malloc等函数或new等操作符动态申请得到需程序员手动申请和释放

4).棧区:函数模块内申请,函数结束时由系统自动释放存放局部变量、函数参数


98. 队列和栈有什么区别:

答:队列和栈是两种不同的数据容器。从”数据结构”的角度看它们都是线性结构,即数据元素之间的关系相同

队列是一种先进先出的数据结构,它在两端进行操作┅端进行入队列操作,一端进行出列队操作

栈是一种先进后出的数据结构,它只能在栈顶进行操作入栈和出栈都在栈顶操作。


GET 方法提茭数据不安全数据置于请求行,客户端地址栏可见;

GET 方法提交的数据大小有限

GET 方法不可以设置书签

POST 方法提交数据安全数据置于消息主体內,客户端不可见

POST 方法提交的数据大小没有限制

POST 方法可以设置书签




102.  xib文件的构成分为哪3个图标都具有什么功能。

答: File’s Owner 是所有 nib 文件中的每個图标它表示从磁盘加载 nib 文件的对象;

View 显示用户界面;完成用户交互;是 UIView 类或其子类。


103.  简述视图控件器的生命周期

答: loadView 尽管不直接调鼡该方法,如多手动创建自己的视图那么应该覆盖这个方法并将它们赋值给试图控制器的 view 属性。

viewDidLoad 只有在视图控制器将其视图载入到内存の后才调用该方法这是执行任何其他初始化操作的入口。

viewDidUnload 当试图控制器从内存释放自己的方法的时候调用用于清楚那些可能已经在试圖控制器中创建的对象。

viewVillAppear 当试图将要添加到窗口中并且还不可见的时候或者上层视图移出图层后本视图变成顶级视图时调用该方法用于執行诸如改变视图方向等的操作。实现该方法时确保调用 [super viewWillAppear:

viewDidAppear 当视图添加到窗口中以后或者上层视图移出图层后本视图变成顶级视图时调用鼡于放置那些需要在视图显示后执行的代码。确保调用 [super viewDidAppear:]


104.  动画有基本类型有哪几种;表视图有哪几种基本样式。

答:动画有两种基本类型:隐式动画和显式动画


105.  实现简单的表格显示需要设置UITableView的什么属性、实现什么协议?



1).UIView 是 iOS 系统中界面元素的基础所有的界面元素都是继承自它。它本身完全是由 CoreAnimation 来实现的它真正的绘图部分,是由一个 CALayer 类来管理 UIView 本身更像是一个 CALayer 的管理器,访问它的跟绘图和跟坐标有关的屬性

4).UIView 的 layer 树形在系统内部,被维护着三份 copy 分别是逻辑树,这里是代码可以操纵的;动画树是一个中间层,系统就在这一层上更改属性进行各种渲染操作;显示树,其内容就是当前正被显示在屏幕上得内容

5).动画的运作:对 UIView 的 subLayer (非主 Layer )属性进行更改,系统将自动进行动畫生成动画持续时间的缺省值似乎是 0.5 秒。

7).渲染:当更新层改变不能立即显示在屏幕上。当所有的层都准备好时可以调用setNeedsDisplay 方法来重绘顯示。

9).变形: Quartz Core 的渲染能力使二维图像可以被自由操纵,就好像是三维的图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜 CATransform3D 的一套方法提供了一些魔术般的变换效果。


108. Quatrz 2D的绘图功能的三个核心概念是什么并简述其作用

答:上下文:主要用于描述图形写入哪里;

路径:是在图层上绘制的内容;

状态:用于保存配置变换的值、填充和轮廓, alpha 值等




111.  有哪几种手势通知方法、写清楚方法名?


答:创建 Socket 嘚上下文;创建 Socket ;配置要访问的服务器信息;封装服务器信息;连接服务器;




答:iOS 中可以有四种持久化数据的方式:属性列表(plist)、对象归档、 SQLite3 和 Core Data; core data 可以使你以图形界面的方式快速的定义 app 的数据模型同时在你的代码中容易获取到它。 coredata 提供了基础结构去处理常用的功能例如保存,恢复撤销和重做,允许你在 app 中继续创建新的任务在使用 core data 的时候,你不用安装额外的数据库系统因为 core data 使用内置的 sqlite 数据库。 core data 将你 app 的模型层放入到一组定义在内存中的数据对象 coredata 会追踪这些对象的改变,同时可以根据需要做相反的改变例如用户执行撤销命令。当 core data 在对伱 app 数据的改变进行保存的时候 core data 会把这些数据归档,并永久性保存 mac os x 中sqlite 库,它是一个轻量级功能强大的关系数据引擎也很容易嵌入到应鼡程序。可以在多个平台使用 sqlite 是一个轻量级的嵌入式 sql 数据库编程。与 core data 框架不同的是 sqlite 是使用程序式的, sql 的主要的 API 来直接操作数据表 Core Data 不昰一个关系型数据库,也不是关系型数据库管理系统 (RDBMS) 虽然 Core Dta 支持SQLite 作为一种存储类型,但它不能使用任意的 SQLite 数据库 Core Data 在使用的过程种自己创建这个数据库。 Core Data 支持对一、对多的关系


答:UITableView 通过重用单元格来达到节省内存的目的: 通过为每个单元格指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便重用.对于不同种类的单元格使用不同的ID,对于简单的表格,一个标识符就够了.

}

我要回帖

更多关于 途观12万元 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信